What is the difference between -DNDEBUG and -DNS_BLOCK_ASSERTIONS flags

Ossir picture Ossir · Nov 13, 2015 · Viewed 9.1k times · Source

I've tried FauxPas source code analyzer and it showed me that I am missing -DNDEBUG flag, with next description:

This argument disables the C standard library assertion macro (as defined in assert.h).

Though, when I check my build settings I found very similar by description flag -DNS_BLOCK_ASSERTIONS=1.

So I wonder now. Do I really need the flag that FauxPas suggests or I am fine with the one I have?

Answer

Rob Napier picture Rob Napier · Nov 13, 2015

NDEBUG disables assert(), which is part of the C standard library. NS_BLOCK_ASSERTIONS disables NSAssert() which is part of Foundation. You generally will require both if you have both kinds of assertions in your code.