Как отключить анализ мертвого кода для препроцессора?Наш проект обладает некоторой макро-магией, которую Android Studio не понимает.Код там, где его не должно быть, выделен серым цветом.
#if SOMETHING
// Here code is gray, but it shouldn't be.
#else
....
#endif
Еще один убедительный пример - это.Он не выделяется серым цветом только для __arch64__
, но проект компилируется для всех архитектур.
#if defined(__x86_64__)
.. // x64 specific
#elif defined(__i386__)
.. // RIP: x86_64 specific
#elif defined(__aarch64__)
.. // etc..
#endif
Еще один убедительный пример - этот трюк.У нас есть файл unity_build.cpp
, в который включены все переходные единицы.В каждой единице перехода есть магия препроцессора.
#ifndef MYPROJ_UNITY_BUILD
... // Transition unit code.
#endif
А в unity_build.cpp
#ifdef MYPROJ_UNITY_BUILD
#undef MYPROJ_UNITY_BUILD
#else
#define MYPROJ_UNITY_BUILD 1
#endif
#include "first-transition-unit.cpp"
#include "second-transition-unit.cpp"
Android Studio выделяет код в каждой единице перехода.