#在c ++代码中代表什么?

时间:2017-11-11 10:25:26

标签: c++ c c-preprocessor

以下代码段中的#s之前的含义是什么?我不是指定义之前的#或用于预处理程序指令的那些。

// Quote a given token stream to turn it into a string.
#define DEV_QUOTED_HELPER(s) #s
#define DEV_QUOTED(s) DEV_QUOTED_HELPER(s)

这个问题与“字符串化 - 它是如何工作的?”不同。因为有这个问题的人不知道“字符串化”一词。它与C中的“什么是'#'运算符不同?”因为它也出现在C ++代码中,在这种情况下甚至SO都无法在类似问题的列表中显示这个问题(它在SQL,python等中显示了其他可能的问题)。

1 个答案:

答案 0 :(得分:5)

取自https://en.wikipedia.org/wiki/C_preprocessor

  

#运算符(称为“字符串化运算符”)转换a   令牌成为字符串,适当地转义任何引号或反斜杠。

     

示例:

#define str(s) #s

str(p = "foo\n";) // outputs "p = \"foo\\n\";"
str(\n)           // outputs "\n"