This question already has answers here:
Closed 6 years ago.
# and ## in macros
(3个答案)
程序1:
程序2:
为什么两个程序的输出会有这样的变化?
这两个程序的确切区别是什么?
打印内容:
(3个答案)
程序1:
#include <stdio.h>
#define foo(x, y) #x #y
int main()
{
printf("%s\n", foo(k, l)); //prints kl
return 0;
}
程序2:
#include <stdio.h>
#define foo(m, n) m ## n
int main()
{
printf("%s\n", foo(k, l)); //compiler error
}
为什么两个程序的输出会有这样的变化?
这两个程序的确切区别是什么?
最佳答案
#
是“stringing”运算符;它将其参数转换为字符串文本。##
是“标记粘贴”运算符;它将其两个参数连接到单个标记中,不一定是字符串文本。
例如:
#include <stdio.h>
#define foo(m, n) m ## n
int main(void) {
char *kl = "token pasting";
printf("%s\n", foo(k, l));
}
打印内容:
token pasting
关于c - C中的#和##宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18552577/
10-09 09:52