Я добавил TEST=1
в раздел Preprocessor Macros
цели проекта Build Settings
, и всякий раз, когда я использую его в коде, препроцессор считает, что он не определен.
- alt + щелчок по нему показывает вопросительный знак
- Раскраска синтаксиса не работает
- Автозаполнение синтаксиса не работает должным образом
Например, имея:
#if TEST
// a
#else
// b
#endif
имеет такое поведение:
- Подсветка синтаксиса работает только для
// b
- Автозаполнение синтаксиса работает только для
// b
Это связано с тем, что препроцессор не может найти TEST
(даже если он определен как 1
, как я уже говорил ранее), поэтому он обрабатывает его как false
.
Есть ли способ решить эти проблемы?
Изменить:
Мой вариант использования связан с несколькими целями проекта. Итак, предположим, что начальная цель называется First
, для которой определен макрос препроцессора TEST
со значением 1
.
Если я создам еще одну цель проекта с именем Second
без определенных макросов препроцессора и захочу добавить для нее некоторый код, только если TEST
равно 0
(false
/не определено), я помещу его в блок #else
(// b
).
Зная, что раскраска синтаксиса и автозаполнение работают для // b
, похоже, что все работает нормально, но если я изменю текущую цель на First
(каламбур) и даже соберу ее, она все равно будет работать как Second
выбрано.