How do I declare a debug only statement

Viewed 34274

In C# I can use the following code to have code which only executes during debug build, how can I do the same in Xcode?

#if DEBUG
{
    // etc etc
}
#endif
4 Answers

You can use

#ifdef DEBUG
    ....
#endif

You'll need to add DEBUG=1 to the project's preprocessor symbol definitions in the Debug configuration's settings as that's not done for you automatically by Xcode.

I personally prefer doing DEBUG=1 over checking for NDEBUG=0, since the latter implies that the default build configuration is with debug information which you then have to explicitly turn off, whereas 'DEBUG=1' implies turning on debug only code.

The NDEBUG symbol should be defined for you already in release mode builds

#ifndef NDEBUG
/* Debug only code */    
#endif 

By using NDEBUG you just avoid having to specify a -D DEBUG argument to the compiler yourself for the debug builds

Related