2012-06-07 3 views
12

Я включаю файл из сторонней библиотеки, который вызывает ошибку, которая может быть понижена до предупреждения с помощью -fpermissive. Но поскольку я не хочу «загрязнять» мой журнал компиляции этими предупреждениями, я хочу полностью отключить эти сообщения.В gcc, как отключить предупреждающее предупреждение?

До сих пор я устанавливал -fpermissive с diagnostic pragma при включении файла; что-то вроде:

#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 does not have it).

Любой шанс, который я могу имитировать? Благодаря!

+1

'-fno-permissive' по умолчанию. '-fpermissive', и ничто не является« отрицательным »и« положительным »версиями флага. Тем не менее, вы не должны использовать это. Исправьте код! Даже если это не твое. – rubenvb

+1

-fno-permissive не является значением по умолчанию, так как опция не существует. Поведение, которое оно имело бы, если бы оно существовало, было бы по умолчанию. Я мог бы исправить код, но он скорее похож на обходной путь ... Во всяком случае, исправление всего набора включенных заголовков на самом деле не является вариантом. – piwi

+0

Это именно то, что я имел в виду. '-fpermissive' - это взлом/обходной путь здесь. О каком коде мы говорим в любом случае. Может быть, есть лучшая альтернатива. – rubenvb

ответ

11

Это может быть немного поздно для этого, но один из них должен делать то, что вы хотите:

#pragma GCC diagnostic ignored "-fpermissive" 

или

#pragma GCC diagnostic ignored "-pedantic" 

«игнорировал», как вы хлюпать диагностики полностью, и обратный -fpermissive - -pedantic, по историческим причинам.

+1

Спасибо за ваш ответ! Вы знаете, где я могу найти упоминания о том, что '-pedantic' является инверсией' -fpermissive'? – piwi

+1

К сожалению, это не задокументировано. Вы можете прочитать о '-fpermissive' здесь: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/C_002b_002b-Dialect-Options.html#index-fpermissive-154 и' -pedantic' здесь: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Warning-Options.html#index-pedantic-257 И если вы прочитаете между строками, вы можете понять, что происходит, так это то, что Компилятор C++ имеет '-pedantic-errors' как свое состояние по умолчанию. Но я не могу доказать это вам, не указывая на фактический код ... – zwol

+0

... и у них нет индекса перекрестных ссылок в Интернете для их VCS, поэтому я не могу найти соответствующий бит фактического кода, не загружая его все и запускает кучу 'grep', которой у меня нет времени на это утро. Сожалею. – zwol

Смежные вопросы