为什么在C ++宏展开为注释时会出现“预期的声明”错误?

时间:2019-12-17 16:25:18

标签: c++ macros c-preprocessor

我有以下宏:

#define DEFINE_EXPORT_MODULE(__module__) /##*Exported by __module__*/

如果我这样使用它:DEFINE_EXPORT_MODULE(foo),它可以正确扩展为/*Exported by foo*/,但是我仍然收到E0169错误:“期望的声明”。

怎么了?

编辑:这是我在代码中的用法。

#define DEFINE_EXPORT_MODULE(__module__) /##*Exported by __module__*/

DEFINE_EXPORT_MODULE("foo.dll") //this produces the error.
void Function(void);

1 个答案:

答案 0 :(得分:2)

扩展宏后,粘贴运算符的结果必须是有效的令牌。

尝试创建评论失败,因为在预处理开始之前已删除了评论。

请参见reference