-DNDEBUG和-DNS_BLOCK_ASSERTIONS标志之间有什么区别

时间:2015-11-13 11:18:39

标签: objective-c xcode build-settings

我尝试了FauxPas源代码分析器,它向我显示我缺少-DNDEBUG标志,下面有说明:

  

此参数禁用C标准库断言宏(如   在assert.h中定义。

但是,当我检查我的构建设置时,我发现描述标志-DNS_BLOCK_ASSERTIONS=1非常相似。

所以我现在好奇。我是否真的需要FauxPas建议的旗帜,或者我对我的旗帜感觉不错?

1 个答案:

答案 0 :(得分:8)

NDEBUG禁用assert(),它是C标准库的一部分。 NS_BLOCK_ASSERTIONS禁用NSAssert(),这是基金会的一部分。如果代码中有两种断言,通常都需要这两种断言。