¿Opciones de GCC para hacer cumplir la verificación estándar de Ansi C?

StackOverflow https://stackoverflow.com/questions/1821952

  •  10-07-2019
  •  | 
  •  

Pregunta

¿Qué opciones de gcc debo usar para hacer cumplir las advertencias / errores ANSI C (C99)? gcc (GCC) 3.4.2 (mingw-special)

Estoy usando: gcc -pedantic -ansi -std = c99 ¿Es esto correcto?

¿Fue útil?

Solución

El indicador -ansi es sinónimo del indicador -std = c89 .

Simplemente usar -std = c99 con -pedantic debería ser suficiente.

En caso de duda, siempre puede consulte la documentación de GCC . A partir de GCC 3.4.2, el capítulo a leer es 2 - Estándares de idiomas compatibles con GCC .

Otros consejos

Esta es una vieja pregunta pero solo quería agregar algunos puntos extra.

En primer lugar, independientemente del conjunto de modificadores de línea de comandos genéricos que suministre a GCC, actualmente no parece posible hacer que GCC informe todas las violaciones de restricciones como " errores " y todo lo demás como "advertencias". Algunos de los mensajes de diagnóstico que GCC informa como '' advertencias '' son, de hecho, violaciones de restricciones (es decir, " errores ") desde el punto de vista del lenguaje C, pero no hay forma de obligar a GCC a reconocer ese hecho y generar un " error " diagnóstico. Es muy probable que se pueda lograr una separación más precisa ajustando los tipos de advertencia individuales, pero no estoy seguro de que la configuración de GCC proporcione suficiente granularidad para lograr una buena coincidencia.

En segundo lugar, GCC proporciona la opción -pedantic-errors que se puede usar en lugar de -pedantic simple, que está destinado a permitir una mayor precisión (como se describió anteriormente) clasificación de mensajes de diagnóstico en "errores" y "advertencias". Sin embargo, todavía no es perfecto.

P.S. La especificación del lenguaje no requiere / define la separación de los mensajes de diagnóstico en " errores " y "advertencias", pero en la práctica muchos programadores esperan que las violaciones de restricciones se notifiquen como "errores". Pensé que podrías haber querido decir algo así cuando mencionaste "hacer cumplir advertencias / errores". en tu pregunta.

-ansi
    In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.

ANSI C no es lo mismo que C99 (todavía). Además, -Wall también puede ser de interés, pero solo -pedantic debe hacer lo que desee.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top