最近在看源代码 ,发现有 的用法,不知其意,Google了下,发现有如下用法,Mark一下:
定义单行宏:主要有以下三种用法.
1) 前加##或后加##,将标记作为一个合法的标识符 的一部分.注意,不是字符串.多用于多行的宏定义中.例如:
#define A(x) T_##x
则 int A(1) = 10; //等效于int T_1 = 10;
#define A(x) Tx##__
则 int A(1) = 10; //等效于int T1__ = 10;
2) 前加#@,将标记转换为相应的字符 ,注意:仅对单一标记转换有效
#define B(x) #@x
则B(a)即’a’,B(1)即’1’.但B(abc)却不甚有效.
3) 前加#,将标记转换为字符串 .
#define C(x) #x
则C(1+1) 即 ”1+1”.