Традиционно компиляторы определяют собственный символ и свою версию в качестве символов препроцессора, чтобы код можно было адаптировать (как правило, для устранения ошибок или специфических особенностей).
CLang представил механизм, который я до сих пор не видел, в виде запроса __has_feature
. Он не заменяет практики «обхода ошибок» (именно поэтому CLang по-прежнему предоставляет определенные символы), но позволяет использовать более естественный стиль для запроса возможностей компилятора. Я не знаю, планируют ли другие компиляторы определить такое средство.