2010-09-20 6 views
1

Я тестировал clang-llvm, чтобы узнать, стоит ли упоминать ИТ-отдел моей школы, чтобы добавить его к машинам, на которых мы участвуем. Для всех наших заданий мы должны скомпилировать с использованием g++ -Wall -W -pedantic-errors *.cpp, поэтому я просто преобразовал команду в clang++ -Wall -W -pedantic-errors. Я получил некоторый вывод, что я не ожидал:Неожиданный вывод от 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) 
        ^

В то время как GCC компилятор не выдаст ошибку о неиспользуемых переменных в блоке поймать. Есть ли что-нибудь, что я могу сделать, чтобы Clang не волновался о неиспользуемых переменных в блоках try/catch, сохраняя при этом команду, похожую на g ++?

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

+3

Вы можете исправить предупреждение. –

+1

В этом отношении есть ли флаг, который я могу предоставить 'gcc', чтобы предупредить об этой неиспользуемой переменной? –

+1

Это должно быть; '-W -Wall' включает все предупреждения о неиспользуемых переменных, которые есть. Возможно, это ошибка g ++. – zwol

ответ

5

Я вроде согласен с Майком, но для получения-вне-землю ради, попробуйте это:

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

Я не использовал llvm много, но я думаю, что точка [-Wunused-variable] в диагностике - это сообщить вам, что вы можете закрыть это предупреждение с помощью -Wno-unused-variable.

+0

Это закрыло предупреждение. Я смог исправить основную проблему, и теперь clang не жалуется, когда я не подавляю предупреждение неиспользуемой переменной. –

3

Что не так с ловушкой исключения с "catch (Исключение &)", если вы не используете переменную? Вы компиляторы, и ваши рецензенты кода будут счастливее.