测试一下你对define语句的理解

 下面这个程序输出什么

 

#include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s/n",h(f(1,2))); printf("%s/n",g(f(1,2))); return 0; } 

 

先自己想想看。


我在gcc4.3下的输出结果是

12
f(1,2)


解释一下:

由于#define语句是在编译的 时候确定的,所以g(f(1,2))是在编译的时候,把g(f(1,2))里的f(1,2)变成了字符串f(1,2),h(f(1,2))在编译的时候变成g(12)--->12。

注:#x是把x变成“x“,##是连接两个字符串

你可能感兴趣的:(测试,gcc)