gpt4 book ai didi

c - 如何使用 ## 运算符通过宏扩展生成字符串或字符常量

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:05 25 4
gpt4 key购买 nike

我正在尝试执行以下操作:

#define mkstr(str) #str
#define cat(x,y) mkstr(x ## y)

int main()
{

puts(cat(\,n));
puts(cat(\,t))
return 0;
}

两个 puts 语句都会导致错误。由于 \nn 都是预处理器标记,我希望在那些 puts 语句中正确输出它们,但是 Bloodshed/DevC++ 编译器给我以下错误:

24:1 G:\BIN\cLang\macro2.cpp pasting "\" and "n" does not give a valid preprocessing token

我遗漏的事实在哪里?

最佳答案

预处理器使用需要 C 语言输入的分词器。因此,即使在进行字符串化时,您也不能将随机垃圾传递给宏。 ==> 不要让你的预处理器难过 - 如果你这样做太频繁它会吃小猫。

实际上,无法通过编译时连接创建 "\n",因为 "\\""n" 是由两个文字组成的字符串,即“\n”。

关于c - 如何使用 ## 运算符通过宏扩展生成字符串或字符常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11247348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com