- C语言中对#和##的处理都是在编译阶段执行,往往是以宏定义的方式处理;
- C语言中#exp是将exp进行字符串化——也就是将#后处理成字符串;
- C语言中##是标识符连接符号,r##Log代表的是标识符rLog(当然rLog必须已经定义);
以下是示例代码:
#include <stdio.h>
#define STRIZE(exp) #exp
#define STRLINK(symbol) int_##symbol
int main()
{
int a = 100;
int b = 200;
int int_a = 10;
int int_b = 20;
printf("result of " STRIZE(a-b)"=%d\n", a - b);
printf("result of int_a - int_b = %d\n", STRLINK(a) - STRLINK(b));
return 0;
}
执行结果: