2011-09-17 9 views

Respuesta

3

usar la bandera -std= para especificar un dialecto idioma: c89, c99, c++98, etc. Tenga en cuenta que es equivalente a c90c89.

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.

+0

¿Cuál de estos es el predeterminado? ¿Hay alguna opción en gcc que me indique que vea la versión predeterminada? – Bruce

+0

@Bruce: ¡Agregado! Tenga en cuenta que el valor predeterminado de C++ puede cambiar eventualmente :-) –

+0

¿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

6

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++.

+0

Funciona para GCC para mí pero no para Clang. –

+0

Ummm 'man gcc' dice que no hay una página de manual para gcc. Wat? – starbeamrainbowlabs

0

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).

+0

Ninguna versión de gcc cumple por completo con ningún estándar ANSI/ISO de forma predeterminada. –

3

Try a continuación mando y buscar std

gcc -v --help | less 

Se le mostrará todas las opciones disponibles para su gcc.

+1

Pero no es la opción que se usa por defecto. –

0

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=....

Cuestiones relacionadas