2009-02-03 23 views
5

Eventuali duplicati:
Can I make GCC warn on passing too-wide types to functions?Differenza tra -Wconversion tra il gcc e g ++

Si consideri il seguente programma di test:

static void func(int a) 
{ 
} 

int main() 
{ 
    unsigned int b = 42; 

    func(b); 

    return 0; 
} 

compilazione con gcc:

 
[email protected]:~/projects$ gcc -Wconversion testit.c 
testit.c: In function âmainâ: 
testit.c:11: warning: passing argument 1 of âfuncâ as signed due to prototype 
[email protected]:~/projects$ 

Ma, in g ++ non c'è nessun avvertimento !:

 
[email protected]:~/projects$ g++ -Wconversion testit.c 
[email protected]:~/projects$ 

Qual è la ragione di questo e non v'è alcun modo per ottenere lo stesso avviso quando si compila il codice C++?

risposta

4

Da the documentation per -Wconversion:

avvertimenti circa le conversioni tra numeri interi con e senza segno sono disabilitati di default in C++ a meno -Wsign-conversione è esplicitamente abilitato.

Sembra che sia necessaria anche una versione sufficientemente nuova di GCC. Ho la versione 4.0.1, e non riconosce -Wsign-conversion.