¿Qué indicador silencia la advertencia de GCC acerca de que no hay línea nueva al final de los archivos?

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

  •  08-07-2019
  •  | 
  •  

Pregunta

Acabo de leer esta publicación sobre por qué new- existen advertencias de línea, pero para ser honesto, mi equipo tiene personas que trabajan en varias plataformas diferentes y con varios editores diferentes (todos usan lo que mejor les queda), por lo que la advertencia se ha vuelto omnipresente, y dado que no es realmente una advertencia vale la pena cuidarla. se convierte en ruido y hace que encontrar advertencias serias sea una molestia.

Muchas veces, las advertencias importantes han pasado desapercibidas porque la gente se acostumbró a que pasaran millones de advertencias inútiles, por lo que, obviamente, simplemente dejan de mirarlas cuidadosamente y con razón, en mi humilde opinión. En nuestro caso, se podría decir que GCC está llorando demasiado para que alguien lo tome en serio, lo cual es una mala actitud, pero es solo la naturaleza humana.

En este momento compilamos con -Wall , porque queremos advertencias, pero ¿hay un indicador de contador para evitar las advertencias de nueva línea?

Nota: leí un poco el manual, pero no encontré la respuesta en ningún lugar obvio, así que me di por vencido.

Nota: en respuesta a la solución totalmente razonable de Robert Gamble, nuestro código es multiplataforma y tenemos personas y se basa en Linux, Solaris y Windows, por lo que la nueva línea ... no es bajo consenso. Y el compilador de alguien siempre va a llorar. Porque hay más de 40 desarrolladores y otro personal no programador también.

¿Fue útil?

Solución

No hay ninguno que yo sepa, he usado GCC durante años.

Actualización: No debería haber ninguna advertencia generada con el estándar C ++ 11. Q relacionada

Otros consejos

Suponiendo que utiliza algún tipo de sistema de control de código fuente, puede agregar un enlace de precompromiso que garantice que los archivos de texto terminen con una nueva línea adecuada. Además, dependiendo del sistema de control de fuente que use, puede agregar un enlace de precompromiso que realmente arregla la línea que termina si no está presente.

¿Por qué no te aseguras de que tus archivos tengan una nueva línea de terminación como se supone que deben tener? Esto debería ser un simple cambio de configuración en los editores infractores y parece una forma bastante fácil de "silenciar" la advertencia.

-Wno-eof-newline

Esto se agregó con la corrección para error de gcc 14331


Por extraño que parezca, no puedo hacer que gcc muestre una advertencia por falta de nuevas líneas. Supongo que las versiones más nuevas han prescindido de esta advertencia por completo.

Puedo hacer que gcc acepte -Wno-eof-newline pero se queja de marcas no reconocidas cuando intento -Weof-newline . C ++ 11 eliminó el requisito de nuevas líneas al final de los archivos, pero para escribir código portátil en los viejos estándares, realmente debería ser posible habilitar tales advertencias pedantes.


Afortunadamente, el sonido metálico sigue admitiendo correctamente el diagnóstico sobre nuevas líneas faltantes: esta advertencia se puede habilitar con -Wnewline-eof en todos los modos, o en C ++ 11 y modos superiores también se puede habilitar con -Wc ++ 98-compat-pedantic .

Estas advertencias están desactivadas de forma predeterminada, pero si está aprovechando la bandera de clancode -Weverything para habilitar una estrategia 'sustractiva' para controlar las advertencias, entonces en C ++ 11 y modos superiores, necesita tanto -Wno-newline-eof como -Wno-c ++ 98-compat-pedantic para desactivar la advertencia.

Estoy 90% seguro de que no hay argumentos para desactivar esto.

El motivo de la advertencia es que los archivos sin una línea final dan un comportamiento indefinido cuando se compilan:

Ver estándar: http://c0x.coding-guidelines.com/5.1.1.2.html

Aquí hay una publicación de blog con un código de Python (que no he probado) que dice que solucionará los archivos fuente con este problema.

http://www.johndcook.com/blog/tag/gcc/

¿Agregar un enlace a su control de origen que no permita un registro de código exitoso hasta que se agregue la nueva línea?

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