versiones tengo saber que programar empezar ejemplos dev compilar como codigo c compiler-construction c99 c89

tengo - Cómo encontrar el estándar de mi compilador actual, como si es C90, etc.



como saber que version de c++ tengo (6)

Además de las respuestas anteriores. Si desea comprobar si está en un C99. Solo define una estructura e inicialízala como:

struct Tree{ struct Node *root; struct Node NIL_t; struct Node * const NIL; } struct Tree t = { .root = NULL, .NIL = &t.NIL_t }; //init.

Esto funciona solo en C99. Si no es así, entonces no está utilizando un C99.

Estoy trabajando en una máquina Linux. ¿Hay algún comando del sistema para encontrar el estándar seguido del compilador de C que estoy usando?


En el momento de la compilación, verifique contra la macro del preprocesador:

  • __ANSI__
  • __STDC__
  • __STDC_VERSION__ > = 199901L para c99

Esto es dependiente del compilador, supongo que estás usando GCC. Puedes revisar tus macros definidas por el compilador usando:

gcc -dM -E - < /dev/null

Consulta el manual sobre las banderas , especialmente:

__STDC_VERSION__

Esta macro se expande al número de versión de C Standard, una constante de entero largo de la forma aaaammL donde aaaa y mm son el año y el mes de la versión estándar. Esto significa a qué versión de C Standard se ajusta el compilador. Al igual que STDC , esto no es necesariamente preciso para toda la implementación, a menos que se esté utilizando GNU CPP con GCC.

El valor 199409L significa el estándar C de 1989 modificado en 1994, que es el valor predeterminado actual; el valor 199901L significa la revisión de 1999 del estándar C. El soporte para la revisión de 1999 aún no está completo.

Esta macro no se define si se utiliza la opción -traditional-cpp, ni cuando se compila C ++ o Objective-C.

En este sitio puedes encontrar mucha información sobre esto. Vea la tabla presente here .


Probablemente tenga gcc, en cuyo caso puede especificar el estándar en tiempo de compilación, por ejemplo

$ gcc -Wall -std=c89 foo.c -o foo

o:

$ gcc -Wall -std=c99 foo.c -o foo

Tipo:

$ man gcc

para más detalles.


Si su compilador de C es gcc, puede usar la opción -std para especificar qué estándar de C debe seguir. El valor predeterminado es gnu89. No hay un comando general del sistema para determinar el estándar para cualquier compilador dado. Tendrás que consultar la documentación.


También puede probar esto en su código usando macros estándar, por ejemplo (originalmente del proyecto sourceforge del mismo nombre):

#if defined(__STDC__) # define PREDEF_STANDARD_C_1989 # if defined(__STDC_VERSION__) # define PREDEF_STANDARD_C_1990 # if (__STDC_VERSION__ >= 199409L) # define PREDEF_STANDARD_C_1994 # endif # if (__STDC_VERSION__ >= 199901L) # define PREDEF_STANDARD_C_1999 # endif # if (__STDC_VERSION__ >= 201710L) # define PREDEF_STANDARD_C_2018 # endif # endif #endif

Si desea verificar esto desde la línea de comandos, puede seleccionar uno (por ejemplo, c89) y verificar el valor de retorno de un programa mínimo:

echo -e "#ifdef __STDC__/n#error/n#endif"|gcc -xc -c - > /dev/null 2>&1; test $? -eq 0 || echo "c89