Я использую #define в одном заголовке, который определен в другом заголовке. Иногда Visual Studio решает, что #define существует, и окрашивает мой код, как если бы он был скомпилирован. Иногда он решает, что не знает, что такое #define, и окрашивает мой код так, чтобы он был скомпилирован. Единственная проблема здесь ТОЛЬКО в том, как Visual Studio представляет мой код, код работает так, как задумано.
Есть ли способ сообщить Visual Studio, что этот #define существует (и равен 1)?
Я знаю, что могу полностью отключить эту окраску, но мне нравится, как она обычно работает. Я также могу быстро определить его в верхней части файла, чтобы изменить цвет, но тогда мне нужно не забыть удалить его перед фиксацией кода. Я попытался проверить, не было ли оно неопределенным, и, если да, определить его. Я думал, что это всегда будет 1 или 0 и поэтому никогда не будет неопределенным. Это решило мою проблему с раскраской, но на самом деле были обнаружены места, где она не была определена, что приводило к ошибкам компиляции.
Intellisense не надежен. Не меняйте свой код только потому, что какой-то цвет выглядит красиво или нет.
Может быть, помогает «решение для повторного сканирования» (в меню «Проект»).
Любая форма добавления определения имеет ту же проблему, что нужно помнить об его удалении перед фактической компиляцией / фиксацией. Мне понравилась идея повторного сканирования, но, к сожалению, она не подействовала.
Если #define нужен только в заголовке, вы можете отменить его в конце заголовка, чтобы он не конфликтовал с тем же #define в другом заголовке.





Вы можете установить определение в настройках вашего компилятора.