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.
¿Por qué usas '/ W3' en MSVC mientras usas' -Wall' en GCC/Clang? MSVC admite '/ W4' y'/Wall' como niveles de advertencia adicionales. –
@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