В 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по историческим причинам.

Другие вопросы по тегам