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

Oss*_*sir 3 xcode objective-c build-settings

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

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

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

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

Rob*_*ier 8

NDEBUG禁用assert(),这是C标准库的一部分.NS_BLOCK_ASSERTIONS禁用NSAssert()哪个是Foundation的一部分.如果代码中有两种断言,通常都需要两者.

  • 第一个-D用于"定义".-DNDEBUG表示"定义NDEBUG" (5认同)
  • 你写了'NDEBUG`,但我问过'DNDEBUG`是否一样? (2认同)