Para el código de su compilador, es común ver a las directivas cpp como:C macros del preprocesador - definición vs. valor de la portabilidad y la práctica
#if defined (__GNUC__) && (__GNUC__ >= 4)
que es la prueba preprocesador Me suelen utilizar - no exclusivamente para __GNUC__
, pero es un ejemplo común. Alternativamente,
#if (__GNUC__ >= 4)
parece satisfacer los mismos requisitos. ¿Hay problemas potenciales con este último? No solo con gcc, sino con cualquier preprocesador que cumpla con los estándares. ¿Se puede evaluar el LHS como un valor determinado, incluso si no está definido? ¿Hay algún escollo en el segundo enfoque que los abogados de idiomas conocen?
Absolutamente de acuerdo en que la primera opción es mejor, ya que hace que la intención sea más obvia y no cuesta nada. También evita un posible "error" en el que se evalúan múltiples casos de compilación/plataforma. –