Почему Xcode4 не выполняет подсветку синтаксиса в блоках условной компиляции? - PullRequest
6 голосов
/ 11 декабря 2011

Пример:

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

Первая часть отлично выглядит в Xcode.

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

выделен синтаксисом. Однако второй части нет:

tf.text = @ "Paid";

NSLog (@ "ПЛАТНАЯ ВЕРСИЯ");

Есть ли параметр типа "Не делать подсветку синтаксиса в #else частях условного кода cimpilation"?

Ответы [ 2 ]

9 голосов
/ 11 декабря 2011

XCode попытается определить, какая ветвь препроцессора будет занята. Ветвь, которая должна выполняться, будет иметь подсветку синтаксиса, а другая - нет.

3 голосов
/ 11 декабря 2011

Большинство IDE, в том числе XCode и Visual Studio, не выделяют код в (не взятых) условных блоках, поскольку во многих случаях это может привести к ошибкам, которые не применяются, и приведет к неправильному выделению. Рассмотрим использование, такое как

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

для кода, который работает на нескольких платформах. Visual Studio не будет знать, как выделить имена функций Apple, а XCode не будет знать, что делать с прагмами Visual Studio и т. Д.

...