C语言预处理功能 关于字符串化和符号粘贴

本文介绍了C语言预处理中的字符串化、粘接操作符的使用和注意事项,包括如何利用宏定义简化变量命名,以及在不同编译器中可能存在的差异。举例说明了##和#操作符的用法,并提供了调试和代码优化的实用技巧。
摘要由CSDN通过智能技术生成

C语言预处理功能 关于字符串化和符号粘贴 2011-08-03 00:00中国IT实验室佚名
字号:A+|A-
  在C语言开发中,宏定义是一个非常有用的工具,它可以使我们的代码更容易理解,更容易维护。如查一个常量在多处被使用,且今后可能会根据不同需要而修改的话,将其define一下那是再好不过了。除此之外,宏定义还有其他的功能,了解它,将更好地辅助我们开发C程序。先看个例子:

  #define Conn(x,y)

  x##y

  #define ToString(x)

  #x

  #define ToChar(x)

  #@x

  这几个宏定义中分别用到了“##”、“#”,“#@”它们的功能分别是:

  1、粘接操作符##——连接两个宏名,注意所连接的是宏名,而不是其所指代的值;

  如int Conn(a,b);定义了一个int型变量ab,以后可以直接调用ab,而不必采用Conn(a,b)的形式;

  printf(Conn("ab","cd"));输出结果为:abcd

  但是:

  #define M 0 #define var(x) Var_##x ... int var(M);//此处定义了什么?

  根据ANSI/ISO C,##操作符只是简单地粘接两个宏名,则int var(M)定义的应该就是Var_M,据测试,这一点是没有问题的。但在一些比较古老的C编译环境中,也有可能定义的是Var_0,比如在TC 2.0中测试发现“Var

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值