2009-06-16 7 views
8

Estoy compilando código C++ y me gustaría habilitar la opción -entético.
Estoy usando GCC 4.0, ejecutando Xcode en Mac OS X Leopard.
Es posible, por ejemplo, permitir macros variadas y el tipo long long que normalmente están prohibidos cuando se utiliza -pedantic (con -Wno-variadic-macros y -Wno-long-long). Pero no pude encontrar nada para deshabilitar la "coma al final de la lista del enumerador" advertencia.
¿Es posible?GCC: ¿Es posible desactivar la advertencia "coma al final de la lista de enumeradores" cuando se usa -pedantic?

Gracias.

Respuesta

4

una coma al final de un enumerador es válido en el C99, pero no en C89, por lo que el siguiente trabajo proporcionando su código es válido C99

gcc -std=c99 -pedantic foo.c 

estoy bastante seguro de que no es válida en C++ (de acuerdo con g ++) en absoluto

Editar: probado esto con GCC 4.2.1 en HP-UX y funciona sin errores/advertencias foo.c

int main(int argc, char** argv) { 
    enum { A, B, }; 
    return 0; 
} 


gcc -std=c99 -pedantic foo.c 
+1

De hecho, aparece una advertencia cuando se usa "-std = c89". Sin advertencia cuando se usa "-std = 99". Pero me sale un error si enciendo foo.c en foo.cpp. Ese es mi problema ... – Guillaume

+2

si es un archivo .c, entonces GCC usa un compilador de C. Si se trata de un archivo .cc o .cpp, GCC usa un compilador de C++. Su código no es legal C++, de ahí el error. – Glen

2

en C++ es aún no es posible deshabilitarlo, aunque es legal en C++ 11. Por lo tanto, en el futuro, cuando se corrija GCC, -std = C++ 11 debería deshabilitarlo.

-std = c99 solo funciona en C, no en C++ (como en la pregunta).

+0

Parece que se ha solucionado ahora: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51888 – StellarVortex

Cuestiones relacionadas