Я использую внешнюю библиотеку, в которой есть один конкретный заголовочный файл, в заголовке которого содержится около 50 статических переменных, которые не используются.Я использую gcc 5.5.0, cmake и c ++ 14.Когда я пытаюсь скомпилировать, я получаю -Werror=unused-variable
.Обычно я решал бы такую проблему следующим образом:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
// libraries which have unused variables here
// ...
#pragma GCC diagnostic pop
Однако неиспользуемые переменные являются статическими, и поэтому неиспользуемые (статические) переменные генерируются после обработки всей единицы компиляции, а не в точкедекларация.Следовательно, активная функция подавления предупреждений над точкой объявления вообще ничего не делает, а когда вы ее вытаскиваете, предупреждение игнорируется в той точке, где оно действительно имеет значение;т.е. после окончания файла.Это сообщенная ошибка GCC.См .: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69967
В данный момент я не могу просто переключить версию gcc, поэтому я пытаюсь обойти проблему.
Одно из решений - сделать (void)(unsused_var)
в каждом файле cppгде я включаю этот конкретный заголовок, однако это приводит к довольно уродливому хаку, так как я бы хотел поместить около 50 таких приведений в несколько файлов cpp.Любая рекомендация для эффективного решения этой конкретной проблемы?Например, я был бы рад поместить броски в одном месте, однако я не уверен, как это сделать в этой ситуации.