В gcc как отключить -fpermissive предупреждение?
Я включаю файл из сторонней библиотеки, который вызывает ошибку, которая может быть понижена до предупреждения с -fpermissive
, Но поскольку я не хочу "загрязнять" мой журнал компиляции этими предупреждениями, я хочу полностью отключить эти сообщения.
Пока я установил -fpermissive
опция с диагностической прагмой при включении файла; что-то вроде:
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"
#include <third-party-file.h>
#pragma GCC diagnostic pop
Поскольку gcc обычно предоставляют как "положительную", так и "отрицательную" версию -f
флаги, я думал о игнорировании функции "без разрешения":
#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>
Но, похоже, нет "негативной" версии -fpermissive
флаг (я использую gcc 4.6.3; но даже в версии 4.7.0 его нет).
Есть ли шанс, что я могу имитировать это поведение? Спасибо!
2 ответа
tldr: Вы не можете отключить fpermissive выход после GCC 4.7.
Просто разместите это здесь, чтобы оно было более наглядным: к сожалению, ответ zwol (хотя и с благими намерениями, и потенциально полезный для тех, у кого более старые версии GCC) не работает для более поздних версий GCC. Начиная с GCC 4.8 и выше, вы не можете отключить fpermissive выход. o11c в своем комментарии к OP содержит следующую ошибку, которая отслеживает это:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81787
Обратите внимание, что он находится в состоянии "RESOLVED INVALID", поэтому невозможность его отключения является ожидаемым поведением, и нет никаких планов его изменить.
Это может быть немного поздно для этого, но один из них должен делать то, что вы хотели:
#pragma GCC diagnostic ignored "-fpermissive"
или же
#pragma GCC diagnostic ignored "-pedantic"
"игнорируется" - это то, как вы полностью подавляете диагностику, и наоборот -fpermissive
является -pedantic
по историческим причинам.