关于C语言中的#和##问题

  1. C语言中对#和##的处理都是在编译阶段执行,往往是以宏定义的方式处理;
  2. C语言中#exp是将exp进行字符串化——也就是将#后处理成字符串;
  3. 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;
}

执行结果:
关于C语言中的#和##问题

上一篇:重新点亮shell————awk数组[十四]


下一篇:SLAM学习