宏定义的使用

C中的宏分为两类,对象宏(object-like macro)和函数宏(function-like macro)。

预定义宏:

1、预定义宏的行为是由编译器指定的。

2、前后双下杠的一般都是预定义。

2、__COUNTER__是一个预定义的宏,这个值在编译过程中将从0开始计数,每次被调用时加1。

3、__FILE__返回当前文件的绝对路径。

4、__LINE__返回展开该宏时在文件中的行数。

5、__func__是改宏所在scope的函数名称。

6、__VA_ARGS__表示的是宏定义中的...中的所有剩余参数。

7、输出rect,size和point的宏:

  1. #define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) 
  2. #define NSLogSize(size) NSLog(@"%s w:%.4f, h:%.4f", #size, size.width, size.height) 
  3. #define NSLogPoint(point) NSLog(@"%s x:%.4f, y:%.4f", #point, point.x, point.y) 

8、使用({...})的形式。这种形式的语句可以类似很多脚本语言,在顺次执行之后,会将最后一次的表达式的赋值作为返回。举个简单的例子,下面的代码执行完毕后a的值为3,而且b和c只存在于大括号限定的代码域中:

  1. int a = ({ 
  2.     int b = 1; 
  3.     int c = 2; 
  4.     b + c; 
  5. }); 
  6. // => a is 3 
9、##在宏中是一个特殊符号,它表示将两个参数连接起来这种运算。
10、#单个井号的作用是字符串化,简单来说就是将替换后在两头加上”“,转为一个C字符串。

宏定义的使用

上一篇:LINUX SHELL 变量


下一篇:awk及sed的使用小结