2009-02-03 10 views
5

Possible en double:
Can I make GCC warn on passing too-wide types to functions?Différence entre -Wconversion entre gcc et g ++

Tenir compte du programme de test suivant:

static void func(int a) 
{ 
} 

int main() 
{ 
    unsigned int b = 42; 

    func(b); 

    return 0; 
} 

Compiler avec 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$ 

Mais, en g ++ il n'y a pas d'avertissement !:

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

Quelle est la raison pour cela et est-il possible d'obtenir le même avertissement lors de la compilation du code C++?

Répondre

4

De the documentation pour -Wconversion:

avertissements sur les conversions entre entiers signés et non signés sont désactivés par défaut dans C++, sauf si -Wsign-conversion est explicitement activé.

Semble que vous aurez également besoin d'une version suffisamment nouvelle de GCC. J'ai la version 4.0.1, et il ne reconnaît pas -Wsign-conversion.

Questions connexes