2010-07-09 15 views
7

Estoy bastante sorprendido cuando compilo el siguiente código sin ninguna advertencia usando g ++ 4.1.2 con -Wall -Wextra -Wconversion habilitado.cómo obtener la compilación advertencia

Quiero que g ++ me muestre todas las advertencias para evitar posibles daños. Tengo que apegarme a g ++ 4.1.2.

#include <stdint.h> 
#include <string> 

using namespace std; 

int main() 
{ 
    uint8_t u1=1; 
    uint64_t u64=1000; 
    string s1=""; 

    u1=u64; // want warning here 
    s1=u64; // want warning here 
    s1=u1; 
} 
+2

Creo que encontrará que la frase en inglés es "querer", no "querer". – paxdiablo

+0

¿Y no quiere una advertencia en la última línea? ¿Cuál es el significado previsto de la asignación de caracteres sin signo a cadena? –

+0

@David: 'string' tiene' operator = (char) '. –

Respuesta

4

Me temo que GCC antes de 4.3 no parece ser compatible con esto. La descripción de -Wconversion cambió entre 4.2 y 4.3 para reflejar el nuevo comportamiento de advertencia, y no hay ninguna indicación de que GCC pre-4.3 verifique esto.

+2

Puedo confirmarlo, gcc 4.3 produce advertencia, 4.2 no – Anycorn

+0

También puedo confirmar que GCC 4.4 produce la advertencia, y solo con '-Wconversion' habilitado – rubenvb

+0

Thx. Luego tendré que buscar alguna herramienta de análisis de código estático de C++. – lyman

Cuestiones relacionadas