C / C ++宏字符串连接

C / C ++宏字符串连接

#define STR1      "s"

#define STR2      "1"

#define STR3      STR1 ## STR2

是否有可能连接STR3 ==“s1”?您可以通过将args传递给另一个宏函数来完成此操作。但是有直接的方法吗?


HUWWW
浏览 1006回答 3
3回答

MYYA

如果它们都是字符串,你可以这样做:#define STR3 STR1 STR2预处理器自动连接相邻的字符串。编辑:如下所述,它不是预处理器,而是执行串联的编译器。

慕哥6287543

提示:STRINGIZE上面的宏很酷,但如果你犯了一个错误并且它的参数不是一个宏 - 你的名字中有一个拼写错误,或者忘#include了头文件 - 那么编译器会愉快地将声称的宏名称放入字符串没有错误。如果您打算将参数设置STRINGIZE为具有正常C值的宏,那么#define STRINGIZE(A) ((A),STRINGIZE_NX(A))将它扩展一次并检查它的有效性,丢弃它,然后再将它再次扩展为一个字符串。我花了一段时间才弄清楚为什么STRINGIZE(ENOENT)最终结束"ENOENT"而不是"2"......我没有包括在内errno.h。
打开App,查看更多内容
随时随地看视频慕课网APP