Leo here es C90 con extensiones. ¿Cómo puedo estar seguro?¿Cómo puedo averiguar con qué norma ANSI C mi gcc funciona de forma predeterminada?
Respuesta
usar la bandera -std=
para especificar un dialecto idioma: c89
, c99
, c++98
, etc. Tenga en cuenta que es equivalente a c90
c89
.
Como abreviatura -ansi
causa -std=c89
en modo C y -std=c++98
en modo C++.
Utilice -pedantic
para habilitar todos los diagnósticos que requieren las normas.
Los valores predeterminados son gnu89
para C y gnu++98
para C++. Consulte el manual para descripciones detalladas de los diferentes dialectos.
Lea la página de manual. En mi equipo (OSX 10.7, la versión de gcc 4.2.1 (Sobre la base de Apple Inc. construir 5658) (LLVM construir 2335.15.00)):
-std =
determinar el estándar del lenguaje. Esta opción actualmente solo es compatible con
al compilar C o C++.Se debe proporcionar un valor para esta opción; los valores posibles son
....
gnu89
predeterminado, ISO C90 más extensiones de GNU (incluyendo algunas de las características C99).....
GNU ++ 98
El mismo que -std = C++ 98 más extensiones de GNU. Este es el valor predeterminado para el código C++.
Funciona para GCC para mí pero no para Clang. –
Ummm 'man gcc' dice que no hay una página de manual para gcc. Wat? – starbeamrainbowlabs
También puede marcar una de las predefined Macros, por ejemplo si su GCC pide ANSI C (STRICT__ANSI) por defecto (es decir, sin ningún argumento CLI).
Ninguna versión de gcc cumple por completo con ningún estándar ANSI/ISO de forma predeterminada. –
Try a continuación mando y buscar std
gcc -v --help | less
Se le mostrará todas las opciones disponibles para su gcc.
Pero no es la opción que se usa por defecto. –
Ninguna versión de gcc cumple por completo con ningún estándar ANSI o ISO C de forma predeterminada. El valor predeterminado es siempre equivalente a -std=gnuNN
, que admite el estándar dado con extensiones específicas de GNU. Antes de la versión 5 (y retrocediendo varios años), el valor predeterminado era -std=gnu90
. Comenzando con la versión 5, el valor predeterminado es -std=gnu11
.
Ha habido tres estándares ISO C: C90, C99 y C11. (C95 fue una enmienda menor a C90.) El primer estándar ANSI C se publicó en 1989, y se conoce como C89; describe el mismo lenguaje que el estándar ISO C90.
Para averiguar la versión de idioma predeterminado para el gcc que se estén ejecutando, el tipo
info gcc
búsqueda de la frase "El valor por defecto".
Esto supone que tiene instalada la documentación de gcc, que la documentación mostrada por info gcc
coincide con la versión de gcc que está ejecutando, y que la redacción es lo suficientemente similar que la búsqueda de "El valor predeterminado" encontrará la información correcta. Ninguno de estos está garantizado. Los manuales antiguos de gcc se pueden organizar de forma diferente.
Más fiable, ejecute
gcc --version
para ver qué versión se está ejecutando, a continuación, visite la página GCC online documentation y leer la documentación de la versión que se está ejecutando.
Más simplemente, si tiene una versión anterior a la 5.0, el valor predeterminado es -std=gnu89
; de lo contrario, el valor predeterminado es -std=gnu11
. (Eso puede cambiar en una versión futura, pero solo un tiempo después de que se publique un nuevo estándar ISO C y los mantenedores de gcc hayan tenido tiempo de implementarlo y decidan hacerlo predeterminado. No contenga la respiración).
O puede evitar la pregunta por completo especificando la versión que desea utilizando la opción de línea de comandos -std=...
.
- 1. ¿Cómo puedo saber si mi GCC compila 64 bits de forma predeterminada?
- 2. ¿Por qué C++ definen en la norma como la norma euclídea al cuadrado
- 3. gcc 4.3.3 opciones del compilador habilitadas de forma predeterminada
- 4. ¿Cómo averiguar qué algoritmo [cifrado] son compatibles con mi JVM?
- 5. constructor con un parámetro de forma predeterminada
- 6. ¿Cómo puedo averiguar mejor cómo funciona django internamente?
- 7. ¿Por qué no puedo encontrar gcc mi biblioteca estática?
- 8. ¿Cómo puedo mantener jQuery UI Accordion colapsado de forma predeterminada?
- 9. ¿Cómo puedo averiguar qué servidor aloja LDAP en mi dominio de Windows?
- 10. C++ 0x: hilo, gcc o mi error?
- 11. ¿Qué significa estática en ANSI-C
- 12. ANSI C vs otras normas C
- 13. Cómo escribir comentarios de documentación en ANSI C?
- 14. ¿Por qué no puedo usar comentarios de estilo // en mi código C?
- 15. ¿Cómo puedo averiguar por qué se detiene mi hilo en ASP.NET?
- 16. ¿Debo configurar Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture de forma predeterminada en mi aplicación?
- 17. ¿Cómo puedo averiguar qué script, programa o shell ejecutó mi script de Perl?
- 18. ¿Cómo puedo averiguar qué servidor de correo ha instalado mi host para mí?
- 19. ¿Cómo puedo averiguar por qué vim sigue cambiando mi configuración de expandtab?
- 20. ¿Cómo puedo averiguar qué eventos están asociados a elementos HTML?
- 21. ¿Por qué GCC permite el uso de round() en C++ incluso con las banderas ansi y pedantic?
- 22. ¿Cómo puedo hacer git-pull verbose de forma predeterminada?
- 23. gcc -lpthread no funciona
- 24. ¿Cómo puedo averiguar qué bibliotecas usa un exe de Windows?
- 25. ¿Cómo puedo averiguar qué procedimiento arrojó una excepción en Delphi?
- 26. ¿Cómo puedo averiguar qué Javascript causa una solicitud de Ajax?
- 27. ¿Por qué mi takeWhile no funciona con mi Stream
- 28. ¿Cómo puedo averiguar * CÓMO * Mi sitio fue pirateado? ¿Cómo encuentro vulnerabilidades del sitio?
- 29. ¿Cómo puedo averiguar qué versión de reportlab estoy ejecutando?
- 30. ¿Cómo puedo averiguar qué versión de git estoy ejecutando?
¿Cuál de estos es el predeterminado? ¿Hay alguna opción en gcc que me indique que vea la versión predeterminada? – Bruce
@Bruce: ¡Agregado! Tenga en cuenta que el valor predeterminado de C++ puede cambiar eventualmente :-) –
¿Qué quiere decir con * modo C * y * modo C++ *? Recientemente leí que [GCC 4.8 tiene como objetivo cambiar al modo C++ por defecto] (http://www.phoronix.com/scan.php?page=news_item&px=MTA4MzI). Qué significa eso? – Nawaz