2010-09-20 27 views
1

J'ai testé clang-llvm pour voir s'il vaut la peine de mentionner au département informatique de mon école de l'ajouter aux machines sur lesquelles nous étudions. Pour toutes nos missions, nous devons compiler en utilisant g++ -Wall -W -pedantic-errors *.cpp, donc je viens de convertir la commande en clang++ -Wall -W -pedantic-errors. Je suis un peu que je sortie ne m'y attendais pas:Sortie inattendue de Clang

Attempting to compile... 
In file included from test_library.cpp:6: 
In file included from ./test_library.h:64: 
In file included from ./library.h:167: 
./library.hpp:20:23: warning: unused variable 'e' [-Wunused-variable] 
    catch(Exception & e) 
        ^

Alors que le compilateur GCC ne donne pas d'erreur sur les variables inutilisées dans le bloc catch. Y at-il quelque chose que je peux faire pour que Clang ne panique pas sur les variables inutilisées dans les blocs try/catch tout en gardant la commande similaire à celle de g ++?

Clang-LLVM (v2.7) GNU GCC (v4.4.4) Fedora 13

+3

Vous pouvez corriger l'avertissement. –

+1

D'ailleurs, y a-t-il un drapeau que je peux fournir à 'gcc' pour qu'il avertisse de cette variable inutilisée? –

+1

Il devrait, en fait; '-W -Wall' active tous les avertissements de variable inutilisée qu'il y a. Peut-être un bug g ++. – zwol

Répondre

5

Je suis d'accord avec Mike un peu, mais pour obtenir hors-la-terre à cause de, essayez ceci:

clang++ -Wall -W -pedantic-errors -Wno-unused-variable 

Je n'ai pas beaucoup utilisé llvm mais je pense le point du [-Wunused-variable] dans le diagnostic est de vous dire que vous pouvez fermer cet avertissement avec -Wno-unused-variable.

+0

Cela a éteint l'avertissement merci. J'ai été capable de résoudre le problème sous-jacent et maintenant clang ne se plaint pas quand je ne supprime pas l'avertissement de variable inutilisée. –

3

Qu'est-ce qui ne va pas si vous attrapez une exception avec "catch (Exception &)" si vous n'utilisez pas la variable? Vous compilateurs ET vos réviseurs de code seront plus heureux.