What kind of #if(compiler if) statements are available?

Discussion in 'Mac Programming' started by BadWolf13, Nov 5, 2010.

  1. BadWolf13 macrumors 6502

    Dec 17, 2009
    I hope I explained that well, but I'm talking about the #if statements that you can put into code, which tells the compiler to only compile a section of code if the condition is met. I've noticed a bunch in the Apple-provided headers, and I'm wondering, is there some kind of resource about what kind of conditions are available to put into these compiler statements?
  2. HiRez, Nov 6, 2010
    Last edited: Nov 6, 2010

    HiRez macrumors 603


    Jan 6, 2004
    Western US
    All the standard C preprocessor directives should be available, including #if, #ifdef, #ifndef, #else, #elif and #endif. I don't think there's much that applies in an Objective-C context that would be different than in a straight C context.


    EDIT: You'll notice there are some restrictions, for example you can't evaluate expressions using strings or floats, generally you can do that before the directive by defining a token and using #ifdef, or using an integer expression with #if.
  3. BadWolf13, Nov 6, 2010
    Last edited: Nov 6, 2010

    BadWolf13 thread starter macrumors 6502

    Dec 17, 2009
    Thank you, I didn't know the term preprocessor, and that's exactly what I was looking at, but I don't think I explained my question very well. It's not the different preprocessor directives that I'm looking for, it's more the different expressions that I can put into a preprocessor #if statement. For example, in foundation.h, there's a conditional compilation based on the statement;

    The expressions used in this condition must have been defined at some point, so I'm wondering how I'm to know what kind of expressions/macros/constants I can use there. Is there some kind of listing, or guide to working with conditionals in XCode?
  4. kainjow Moderator emeritus


    Jun 15, 2000
    You can command-click those in Xcode to find out where they're defined, which is:


    Also see
  5. BadWolf13 thread starter macrumors 6502

    Dec 17, 2009
    Thanks, that's a good idea, unfortunately when I ctrl-click on the macro, the "Jump to Definition" is greyed out? Could there be a setting in XCode that's preventing me from using this?

    Also, a spotlight search won't find either of those two files that you listed. Back when I used Windows, there were "hidden files", does OXS do anything like that?

Share This Page