Для кода, специфичного для компилятора, часто можно увидеть директивы cpp, такие как:
#if определено (__GNUC__) && (__GNUC__ >= 4)
, что является тестом препроцессора, который я обычно использую - не только для __GNUC__
, но это распространенный пример. Альтернативно,
#if (__GNUC__ >= 4)
, по-видимому, удовлетворяет тем же требованиям. Есть ли потенциальные проблемы с последним? Не только с gcc, но и с любым препроцессором, соответствующим стандартам. Можно ли оценить LHS как определенное значение, даже если оно не определено? Есть ли какие-либо подводные камни во втором подходе, о которых знают какие-либо языковые юристы?