你能用 C#define 注释吗?

标签 c debugging c-preprocessor

我正在尝试做一个调试系统,但它似乎不起作用。

我想完成的是这样的:

#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/

相关文章:

c# - VS 调试并观察变量的变化

debugging - 调试深度递归的实用技巧?

debugging - 如何在 Intellij 中调试一个项目,同时在另一个项目中设置断点

c - 为什么函数在代码中没有返回值时返回值给前一个函数?

c - 劫持linux中的实时时钟

c - 如何修复 : OP-code isn't read out correctly

c++ - __VA_ARGS__ 有问题

c - dup2 导致程序停止

c++ - 在执行 block 之前和之后执行一些指令

c# - 如何取消符号 CONTRACTS_FULL 的定义?