2011-06-29 4 views
5

estoy esperando para que las advertencias para los siguientes problemas de compilación de C++ y los correspondientes compiladores:de advertencia en el orden de campo init, firmó comparación, y VARs no utilizados en VC++ y Sun Studio

  1. las variables utilizadas - Sun Studio CC

    Ejemplo: void m() { int i = 10; }

  2. Firmado a la comparación sin signo - VC++ y Sun Studio CC

    Ejemplo: if ((unsigned) 10 < -1);

  3. incorrecto orden de los campos de inicialización - VC++ y Sun Studio CC

    Ejemplo: class A { int i, j; A() : j(0), i(0) {} };

Todos ellos están atrapados por GCC y me gustaría habilitarlos en VC++ y Sun Studio.

bash-4.1$ g++ -Wall main.cpp 
main.cpp: In function ‘void m()’: 
main.cpp:1: warning: comparison between signed and unsigned integer expressions 
main.cpp:1: warning: unused variable ‘i’ 
main.cpp: In constructor ‘A::A()’: 
main.cpp:1: warning: ‘A::j’ will be initialized after 
main.cpp:1: warning: ‘int A::i’ 
main.cpp:1: warning: when initialized here 

EDIT: Fuera habilitación firmado a las advertencias de comparación sin signo en VC++, no parecen todas las demás opciones a ser posible.

Respuesta

2

En Visual Studio, Project Properties, C++, establece el nivel de advertencia en 4 (máximo): el compilador de VC++ ofrece todas las advertencias posibles. AFAIK, las advertencias 1 y 2 se informan y el compilador de VC++ no informa el orden de inicialización de campo.

+0

¿Alguien sabe si este sigue siendo el caso con vc2015? ¿Alguna bandera especial en alguna parte? –

+0

Aún no. https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/2553854-c-compiler-should-warn-about-wrong-member-initia – EricLaw

Cuestiones relacionadas