Почему 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 и т. Д.