Me gustaría incluir un archivo diferente según la versión de GCC. Más precisamente, quiero escribir:¿Cómo pruebo en tiempo de compilación la versión actual de GCC?
#if GCC_VERSION >= 4.2
# include <unordered_map>
# define EXT std
#elif GCC_VERSION >= 4
# include <tr1/unordered_map>
# define EXT std
#else
# include <ext/hash_map>
# define unordered_map __gnu_cxx::hash_map
# define EXT __gnu_cxx
#endif
No me importa gcc antes de 3.2.
Nota: Estoy bastante seguro de que hay una variable definida en el tiempo de preprocesamiento para eso, simplemente no puedo encontrarlo de nuevo.
Desafortunadamente este código falla con el compilador clang, que define '__GNUC__', pero no incluye' features.h'. – Gil
Bueno, este código es para conocer la versión de GCC, por lo que no es sorprendente que falle si clang se hace pasar por GCC. – PierreBdR
Lo siento, parece que estaba equivocado. La característica 'features.h' es simplemente algo específico de Linux, y no se debe confiar en ningún código que se compile en otras plataformas. – Gil