use*_*609 7 c c++ c-preprocessor
这是一个很奇怪的问题。这是一个非常简单的类似函数的宏,我已经多次看到它的例子。我什至以前用过它!但是,我在 6 小时后无法正常工作。我累了,决定在这里问。也许有人发现了问题。最小的可重现情况是:
enum e {
x, y, z,
#define Func(X, Y, Z) \
my_##X = Y
Func(x, y, z),
};
Run Code Online (Sandbox Code Playgroud)
它以类似的方式用于 clang源代码。我也包含一个包含宏的定义和使用的文件。
编辑:
非常感谢您的回答和评论。我确实使用过 Godbolt,但是在我的构建失败之后。事实证明,宏在我的构建过程中从未失败过。那是因为我没用过宏!它没有被使用,所以它从来没有产生过输出。真是太丢人了。我必须接受我的错误,然后继续前进。我必须通过本地预处理来检查它。在 Godbolt 中得到空字符串让我相信我做错了什么。
我敢打赌这是 godbolt 中的换行问题。解决方法在这里:
#define Func(X, Y, Z) ,my_ ## X = Y
enum e {
x, y, z
Func(x, y, z),
};
Run Code Online (Sandbox Code Playgroud)