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