C中以下程序的输出是什么

时间:2015-03-16 17:06:53

标签: c c-preprocessor

这个程序的输出是什么,请向我解释一下?

#include    <stdio.h>
#define     foo(m,n)    m##n
int     main()
{
     printf("%s\n",foo(k,l));
}

1 个答案:

答案 0 :(得分:1)

当我尝试编译此程序时,我收到此错误 [Error] 'kl' was not declared in this scope

实际上, ##运算符使用两个单独的标记并将它们粘贴在一起形成一个标记。生成的标记可以是变量名,类名或任何其他标识符。

所以在这里你试图打印一个标识符&#34; kl&#34;甚至没有宣布它。现在只需添加此行

char kl[16]="hello world!";

您将获得输出 hello world!