2012-01-07 6 views
5

Después de escribir una respuesta al this question que muestra la solución en tiempo de compilación con un error, me pregunté si era posible obtener una advertencia en su lugar y finalizar la compilación (como realmente se especifica en la pregunta).¿Advertencias que se dispararán consistentemente en diferentes compiladores?

Si bien los diagnósticos en general son dependientes del compilador, para algunos códigos es bastante obvio que se activará un error (como acceder a un miembro inexistente o intentar crear una instancia de un objeto de tipo incompleto).

No se puede decir lo mismo de las advertencias, ya que estas tienden a diferir mucho entre los compiladores. Aunque es razonable suponer que las advertencias desencadenadas con GCC también se desencadenarán con Clang, no se puede decir lo mismo de Visual C++.

Pregunta:
¿Qué advertencias, si las hay, se activarán consistentemente en los tres compiladores mencionados?

/W3 en VC++ y -Wall en GCC & Clang puede suponerse.


Tenga en cuenta que esto no sólo es útil para esa pregunta, pero puede ser útil para la activación de un aviso para los mensajes definidos por el usuario también.

+1

¿Por qué usas '/ W3' en MSVC mientras usas' -Wall' en GCC/Clang? MSVC admite '/ W4' y'/Wall' como niveles de advertencia adicionales. –

+0

@Cody: pienso en ellos como la configuración "predeterminada" para los compiladores. No quiero tener que cambiar el nivel de advertencia para que aparezca la advertencia. '/ W3' es el valor predeterminado en Visual Studio y' -Wall' se puede ver también como predeterminado. – Xeo

Respuesta

2

Esto debería funcionar en MSVC, GCC, y Clang:

#pragma message("hello world") 

No es muy útil, pero todavía funciona.

Estos recogido advertencias también:

  • variables
  • etiqueta no utilizada
  • valores grandes no utilizados, por ejemplo, (1 < < 128)
+0

No se puede mostrar nada de plantilla con eso. :(Y eso realmente no cuenta como una advertencia ahora, ¿o sí? – Xeo

+0

@Xeo Sí, aunque está garantizado que funciona, las advertencias no tanto. – Pubby

Cuestiones relacionadas