title: What is the difference between #ifdef __IPHONE_3.2 and #if __IPHONE_3.2?
body: <p>I have an iphone app that needs to work for 3.1.3 for the iPhone and 3.2 for the iPad. It is an iPhone app that I want to work on the iPad.  </p>
  
  <p>The main difference is the MPMoviePlayerController which introduces/and deprecates lots of things in 3.2.  </p>
  
  <p>Since, the iPhone OS only goes up to 3.1.3 and the iPad is on 3.2, I need to seperate my code so it only compiles the required code for the respective OS.</p>
  
  <p>I can't use [[UIDevice currentDevice] model] because I end up with deprecated warnings on the 3.1.3 code. Also, UIUserInterfaceIdiomPad is new in 3.2 so it doesn't work well with 3.1.3...</p>
  
  <p>So, I decided to use this, which only compiles what is necessary for the particular OS:</p>
  
  <pre><code>#if __IPHONE _3_2
  
  //do 3.2 iPad stuff
  
  #else
  
  //do 3.1.3 iPhone/iPod Touch stuff
  
  #endif
  </code></pre>
  
  <p>My question is... What is the difference between these?  </p>
  
  <pre><code>#ifdef __IPHONE_3_2
  </code></pre>
  
  <p>and</p>
  
  <pre><code>#if __IPHONE_3_2
  </code></pre>
  
  <p>Thank you</p>