您的位置:首页 > 其它

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

2009-11-16 21:17 274 查看
下面这个程序输出什么

#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“,##是连接两个字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: