以下代码段中的#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等中显示了其他可能的问题)。
答案 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"