Как отключить неиспользуемые предупреждения переменных, выходящие из gcc в стороннем коде, который я не хочу редактировать?
Я хотел бы знать, какой переключатель вы передаете компилятору gcc, чтобы отключить предупреждения о неиспользуемых переменных? Я получаю ошибки из boost на windows, и я не хочу касаться кода boost:
C:boost_1_52_0/boost/system/error_code.hpp: At global scope:
C:boost_1_52_0/boost/system/error_code.hpp:214:36: error: 'boost::system::posix_category' defined but not used [-Werror=unused-variable]
C:boost_1_52_0/boost/system/error_code.hpp:215:36: error: 'boost::system::errno_ecat' defined but not used [-Werror=unused-variable]
C:boost_1_52_0/boost/system/error_code.hpp:216:36: error: 'boost::system::native_ecat' defined but not used [-Werror=unused-variable]
Я пробовал использовать оба -Wunused-value и -Wno-unused-value но ни один из них не подавил сообщения выше.
какая правильная команда, вот моя строка компиляции:
g++ -g -fno-inline -Wall -Werror -Wextra -Wfloat-equal -Wshadow
-Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wno-conversion
-Wdisabled-optimization -Wredundant-decls -Wunused-value -Wno-deprecated
-IC:boost_1_52_0 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-c -o op.o op.cpp
возможно -Wall переопределяет моя цель?
9 ответов:
The
-Wno-unused-variableпереключатель обычно делает трюк. Однако это очень полезное предупреждение, если вы заботитесь об этих вещах в своем проекте. Это становится раздражающим, когда GCC начинает предупреждать вас о вещах, не входящих в ваш код.Я бы рекомендовал вам сохранить предупреждение, но использовать
-isystemвместо-Iдля включения каталогов сторонних проектов. Этот флаг говорит GCC не предупреждать вас о вещах, которые вы не контролируете.например, вместо из
-IC:\boost_1_52_0, сказал-isystem C:\boost_1_52_0.надеюсь, что это помогает. Удачи Вам!
иногда вам просто нужно подавить только некоторые предупреждения, и вы хотите сохранить другие предупреждения, просто чтобы быть в безопасности. В вашем коде вы можете подавить предупреждения для переменных и даже формальных параметров с помощью GCC неиспользованный
Если вы используете gcc и хотите отключить предупреждение для выбранного кода, Вы можете использовать директиву компилятора #pragma:
#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" ( your problematic library includes ) #pragma GCC diagnostic popдля кода, который вы контролируете, вы также можете использовать
__attribute__((unused)), чтобы указать компилятору, что определенные переменные не используются.
посмотреть
man gccв разделе Параметры предупреждения. Там у вас есть целая кучаunusedОпции Предупреждение
... -Wunused -Wunused-функция -Wunused-метки -Wunused-параметр -Wunused-значение -Wunused-переменная -Wunused-но-установить-параметр -Wunused-но-набор-переменнаяЕсли вы префикс любого из них с
no-, он отключит это предупреждение.многие параметры имеют длинные имена, начинающиеся с-f или с-W - - - для например,-fmove-loop-инварианты, - Wformat и так далее. Большинство из них имеют как положительные, так и отрицательные формы; отрицательная форма-ffoo будет-fno-foo. Данное руководство документирует только одну из этих двух форм, в зависимости от того, какая из них не является стандартной.
более подробное объяснение можно найти в параметры запроса или подавления предупреждений
компилятор уже говорит вам, что это не
valueноvariable. Вы ищете-Wno-unused-variable. Кроме того, попробуйтеg++ --help=warningsчтобы увидеть список доступных вариантов.
Как отключить неиспользуемые предупреждения переменных, выходящие из gcc?
Я получаю ошибки из boost на windows, и я не хочу касаться кода boost...вы по адресу!--6-->Boost в проф и подать отчет об ошибке против повышения.
ваше приложение не несет ответственности за удаление предупреждений и ошибок библиотеки. Библиотека несет ответственность за удаление собственных предупреждений и ошибок.
удалить
-Wallи это должно работать. Проблема с удалением-Wallэто также будет подавлять законные предупреждения. Вам придется вручную выбрать-Wпараметры в этом случае или заменить на-Wno-unused-variableпосле того, как вы все предупреждения покрыты.LOCAL_CFLAGS = -Wno-unused-variable -g
Comments