2010-07-09 24 views
7

Sono abbastanza sorpreso quando compilo il seguente codice senza alcun avviso usando g ++ 4.1.2 con -Wall -Wextra -Wconversion abilitato.come ottenere avviso di compilazione

Desidero che g ++ mostri ogni avvertimento per evitare potenziali danni. Devo attenermi 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

Penso che troverete la frase inglese è "voglio", non "voglio". – paxdiablo

+0

E non vuoi un avviso sull'ultima riga? Qual è il significato previsto dell'assegnazione dal char non firmato alla stringa? –

+0

@David: 'stringa' ha' operator = (char) '. –

risposta

4

ho paura GCC prima di 4.3 non sembra a sostegno di questa. La descrizione di -Wconversion è cambiata tra 4.2 e 4.3 per riflettere il nuovo comportamento di avviso e non vi è alcuna indicazione che il GCC precedente alla 4.3 verifichi.

+2

Posso confermarlo, gcc 4.3 produce avviso, 4.2 non – Anycorn

+0

Posso anche confermare GCC 4.4 produce l'avviso, e solo con '-Wconversion'enabled – rubenvb

+0

Thx. Quindi dovrò cercare uno strumento di analisi del codice C++ statico. – lyman

Problemi correlati