C编译器中的调试模式编译是否有标准规范(ANSI / C89 / C99)的预定义标志?
我知道DEBUG
和NDEBUG
标志,但我不确定他们是否符合C标准。
答案 0 :(得分:3)
否 - 标准中是否使用NDEBUG
来确定assert
扩展到什么,但没有关于导致它定义的原因。至少在我的回忆中,根本没有任何名为DEBUG
的内容。
答案 1 :(得分:3)
这实际上取决于你所说的 - “调试模式编译”。对不同的人来说,这可能意味着许多不同的事情:
assert
功能 NDEBUG
仅控制子弹#3。当然,它经常与其他人结合使用,因为将它们结合使用是有意义的。但没有什么能迫使你使用所有这些 - 你可以定义这些东西的各种组合,例如使用断言检查优化构建等。