Почему Xcode4 не выполняет подсветку синтаксиса в блоках условной компиляции?

Пример:

#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 = @ "Платный";

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

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

2 ответа

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

Большинство 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 и т. Д.

Другие вопросы по тегам