我正在尝试在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: 错误:在‘/’标记之前期望表达式
如前所述,我已尝试多种变化,但都未能通过编译并出现了类似的诊断。
我做错了什么,为什么文章中的代码不能很好地编译?