Как игнорировать неиспользуемые статические переменные в gcc 5.x? - PullRequest
0 голосов
/ 23 сентября 2019

Я использую внешнюю библиотеку, в которой есть один конкретный заголовочный файл, в заголовке которого содержится около 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.Любая рекомендация для эффективного решения этой конкретной проблемы?Например, я был бы рад поместить броски в одном месте, однако я не уверен, как это сделать в этой ситуации.

...