我正在尝试在C中创建一个“单行注释”宏,根据一些全局宏定义,它有条件地用于注释掉代码行。这与本文所表达的想法相同。
尝试了此代码的许多排列,我不断收到来自编译器的错误消息。
例如,直接遵循该页面中的代码示例:
#define COMMENT SLASH(/)
#define SLASH(s) /##s
#define DEBUG_ONLY COMMENT
DEBUG_ONLY a = b; // <-- line #83
GCC 给出以下错误:
prog.c:83:1:错误:粘贴“/”和“/”没有给出有效的预处理标记
prog.c:83:错误:“/”标记之前的预期表达式
如前所述,我使用该主题并尝试了许多变体,但都未能给出类似的诊断。
我做错了什么,为什么文章中的代码编译不好?