C:#define FOO(s)#s中的第二个#是什么

时间:2014-09-03 21:23:59

标签: c

C做什么?特别是#define就像这样

#define FOO(s) #s

2 个答案:

答案 0 :(得分:1)

来自MSDN documentation

  

数字符号或"字符串化" operator(#)转换宏   不扩展参数的字符串文字的参数   定义。它仅用于带参数的宏。如果它   在宏定义中的形式参数之前,实际上   宏调用传递的参数用引号括起来   并被视为字符串文字。然后字符串文字替换每个字符串   出现了字符串化运算符和形式化的组合   宏定义中的参数。

上面链接的页面包含一些用于比较的实际示例。

答案 1 :(得分:1)

它生成一个字符串

#define FOO(s) #s
FOO(hello)

相同
"hello"