【发布时间】:2011-06-16 04:49:16
【问题描述】:
标准规范 (ANSI/C89/C99) 中是否有任何预定义标志用于 C 编译器中的调试模式编译?
我知道 DEBUG 和 NDEBUG 标志,但我不确定它们是否符合 C 标准。
【问题讨论】:
标签: c debugging compiler-construction standards compiler-flags
标准规范 (ANSI/C89/C99) 中是否有任何预定义标志用于 C 编译器中的调试模式编译?
我知道 DEBUG 和 NDEBUG 标志,但我不确定它们是否符合 C 标准。
【问题讨论】:
标签: c debugging compiler-construction standards compiler-flags
这真的取决于你所说的 - “调试模式编译”。它对不同的人可能意味着很多不同的东西:
assert函数的使用NDEBUG 仅控制子弹 #3。当然,它经常与其他人结合使用,因为将它们一起使用是有意义的。但没有什么能强迫你使用所有这些 - 你可以定义这些东西的各种组合,例如使用断言检查等优化构建。
【讨论】:
否——NDEBUG 是否被定义在标准中用于确定 assert 扩展为什么,但没有任何关于导致它被定义的原因。至少在我的记忆中,根本没有任何名为 DEBUG 的东西。
【讨论】: