2011-12-10 3 views
6

Esempio:Perché Xcode4 non esegue alcuna evidenziazione della sintassi nei blocchi di compilazione condizionale?

#ifdef FREE_VERSION 
    tf.text = @"Free"; 
    NSLog(@"FREE VERSION"); 
#else 
    tf.text = @"Paid"; 
    NSLog(@"PAID VERSION"); 
#endif 

La prima parte sembra bene in Xcode.

tf.text = @"Free"; 
    NSLog(@"FREE VERSION"); 

evidenziato in sintassi. Tuttavia, la seconda parte non è:

tf.text = @ "Paid";

NSLog (@ "VERSIONE PAGATA");

Esiste un'impostazione come "Non eseguire l'evidenziazione della sintassi in #else parti del codice di condizionamento condizionale"?

risposta

9

XCode proverà a determinare quale ramo del preprocessore verrà utilizzato. Il ramo che si prevede di eseguire avrà l'evidenziazione della sintassi mentre l'altro no.

3

La maggior parte degli IDE inclusi XCode e Visual Studio non evidenzieranno il codice nei blocchi condizionali (non presi) poiché in molti casi ciò comporterebbe errori che non si applicano e l'evidenziazione incasinata. Considerare un utilizzo come

#ifdef __APPLE__ 
// Do something that uses apple-only headers/functions 
#endif 
#ifdef _MSVC_VER 
// Do something that visual studio recognizes 
#endif 

per il codice che viene eseguito su più piattaforme. Visual Studio non avrà idea di come evidenziare i nomi delle funzioni di Apple e XCode non saprà cosa fare sui prandi di Visual Studio ecc.