我正在尝试做一个调试系统,但它似乎不起作用。
我想完成的是这样的:
#ifndef DEBUG
#define printd //
#else
#define printd printf
#endif
有办法吗?我有很多调试消息,但我不想这样做:
if (DEBUG)
printf(...)
code
if (DEBUG)
printf(...)
...
最佳答案
不,你不能。在预处理指令的任何处理开始之前,注释将从代码中删除。因此,您不能在宏中包含注释。
此外,以后通过使用任何宏技巧来“形成”评论的任何尝试都不能保证有效。编译器不需要将“迟到”的注释识别为注释。
实现您想要的最好方法是在 C99 中使用带有可变参数的宏(或者,也许,使用编译器扩展)。
关于你能用 C#define 注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785205/