Я работаю над проектом, который был построен как с gcc, так и с msvc. Недавно мы начали строить с помощью clang.
В коде есть некоторые части, где выполняются действия, специфичные для платформы:
#ifndef _WIN32
// ignore this in msvc
#endif
Поскольку gcc ранее была единственной не-оконной сборкой, это было эквивалентно утверждению "делать это только для gcc". Но теперь это означает "делать это только для gcc и clang".
Однако есть еще ситуации, когда я хотел бы обработать что-то специально для gcc, а не для clang. Есть простой и надежный способ обнаружения gcc, т.е.
#ifdef ???
// do this *only* for gcc
#endif