ver parametros librerias lenguaje ejecutar con compilar como archivo c++ c gcc versions

c++ - parametros - compilar y ejecutar c en linux



¿Cómo pruebo en tiempo de compilación la versión actual de GCC? (4)

Me gustaría incluir un archivo diferente según la versión de GCC. Más precisamente, quiero escribir:

#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 nuevamente.


Hay una serie de macros que deberían definirse para sus necesidades:

__GNUC__ // major __GNUC_MINOR__ // minor __GNUC_PATCHLEVEL__ // patch

El formato de la versión es major.minor.patch, por ejemplo, 4.0.2

La documentación para estos se puede encontrar aquí .


Ok, después de más búsquedas, una forma posible de hacerlo es usar __GNUC_PREREQ definido en features.h .

#ifdef __GNUC__ # include <features.h> # if __GNUC_PREREQ(4,0) // If gcc_version >= 4.0 # elif __GNUC_PREREQ(3,2) // If gcc_version >= 3.2 # else // Else # endif #else // If not gcc #endif


puede analizar la versión de gcc por gcc --version. En un script bash, ejecutaría ese comando como $ (gcc --version). para mantenerlo en una var se podría decir: GCC_VERSION = $ (gcc --version)

éxito


Como nota al margen:

Para encontrar todas las macros predefinidas:

  • Crear un archivo vacío t.cpp
  • g++ -E -dM t.cpp