Bil*_*eal 11 c assert c-preprocessor
NDEBUG定义宏时禁用标准C断言宏,意味着"不调试".这导致了非常糟糕的双重否定案例#ifndef NDEBUG //DebuggingCode #endif.似乎RELEASE本来是一个更好的术语选择,但我无法相信标准委员会会这样做而没有任何理由这样做....
宏NDEBUG控制assert行为方式.
您通常不应该将它用于其他任何事情.如果您将其用于其他事情,例如额外的调试跟踪输出,则您没有选项来构建应用程序而没有这些额外的代码但启用了断言.
我建议您定义自己的预处理器符号,比如MY_TRACE,然后使用它.另外,将其定义为0或1使用#if MY_TRACE.这样,如果将编译器配置为在预处理器表达式中使用未初始化的变量时发出警告,则可以使用符号捕获文件而不进行正确初始化.
拥有一个宏RELEASE意味着代码已准备好分发 - 当它可能没有时.另一方面,NDEBUG意味着调试已完成,因此可以进行测试.
我还认为不得不关闭事情比确保你已经完成所有事情更好.这就是为什么大多数操作系统(例如)在很多人不需要的时候开启大部分操作系统的原因.
只是我谦虚的想法.
| 归档时间: |
|
| 查看次数: |
7208 次 |
| 最近记录: |