【发布时间】:2011-07-18 06:43:29
【问题描述】:
我的代码中充满了对assert(condition) 的调用。
在调试版本中,我使用g++ -g 来触发我的断言。
出乎意料的是,在我的发布版本中也触发了相同的断言,即编译时没有-g选项。
如何在编译时完全禁用我的断言?我是否应该在我生成的任何构建中明确定义NDEBUG,无论它们是调试、发布还是其他任何东西?
【问题讨论】:
-
有点离题:如果你想要调试信息,
-g相当于-g2。-g3可能是更好的选择,因为它提供了最具象征意义的信息。例如,在-g3,符号#defines 将可用。不过,我似乎有些工具链在-g3上卡住了。此外,许多外部库还依赖-DDEBUG进行“调试”构建(Posix 仅证明-DNDEBUG用于“发布”构建)。