Название: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 22, 2012, 14:12 В известной книге серии С++ In-Depth "101 совет..." чуть ли не первым пунктом стоит избавление ото всех предупреждений компилятора на максимальном уровне. Их позволяется отключать, кажется, в одном случае: если они есть в поставляемой библиотеке. Вместо нее предлагается подключать наш собственный файл, являющийся "оберткой" исходной библиотеки, в которой однако специальными командами компилятора предлагается на время отключать вывод тех ошибок, которые в сторонней библиотеке содержатся.
Однако мне было не до конца понятно, как именно отключать конкретные типы предупреждений и как определить, какой номер, скажем, у предупреждения "unused variable". А как вы это делаете? :) UPD. Вот как это было сделано в книге Саттера/Александреску. Требуются номера предупреждений... #pragma warning(push) //Отключение предупреждений только для данного заголовочного файла #pragma warning(disable:4512) #pragma warning(disable:4180) #include "lib.h" //Исходная, "обертываемая" библиотека #pragma warning(pop) //Восстанавливаем исходный уровень вывода предупреждений Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: mutineer от Июнь 22, 2012, 14:24 Номер предупреждения видно же в выхлопе компилятора
Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 22, 2012, 14:34 Да вот - смотрел в окне Compile Output и не нашел :( (Qt Creator для Qt 4.5.3 под Линукс). Файл и номер "предупреждаемой" строки в файле есть, английское название предупреждения есть, номера нету.
Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: mutineer от Июнь 22, 2012, 14:37 хм, действительно... Значит что-то перепутал
Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Fat-Zer от Июнь 22, 2012, 15:13 что за "номер предупреждения"? таких не знаю...
предупреждения задаются опциями компилятора. для unused variable: -Wno-unused-variable. остальные смотреть в man gcc. Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 25, 2012, 14:44 Вот как это было сделано в книге Саттера/Александреску. Как видите, здесь требуются номера предупреждений (чем еще могут быть "4512" и "4180"?)...
#pragma warning(push) //Отключение предупреждений только для данного заголовочного файла #pragma warning(disable:4512) #pragma warning(disable:4180) #include "lib.h" //Исходная, "обертываемая" библиотека #pragma warning(pop) //Восстанавливаем исходный уровень вывода предупреждений Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Fat-Zer от Июнь 25, 2012, 17:56 все #pragma реализуются на усмотрение компилятора.
Саттера точно не про gcc писал... gcc делает так (http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html). Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 26, 2012, 10:50 Спасибо!
К сожалению, позже выяснилась непонятная вещь: мой компилятор игнорирует #pragma. То есть и те инструкции, которые давал Саттер, и инструкции по приведенной вами ссылке - компилятор выдает дополнительные предупреждения "ignoring #pragma". Возможно, следует что-нибудь прописать в pro-файл (слабо знаком с собственно компилятором)? (Вроде, стандартная сборка Qt 4.5.3, компилятор linux-g++) Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Fat-Zer от Июнь 26, 2012, 21:38 версия gcc какая? эти прагмы появились в ветке 4.2....
Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 27, 2012, 08:05 Да, видимо, проблема в этом - у меня версия 3.3.6.
Значит, на этой версии провернуть трюк со временным отключением избранных предупреждений не получится? Может, есть какой-то другой инструмент для этой версии, пусть более грубый, отключающий/включающий, например, вообще все предупреждения? Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Fat-Zer от Июнь 27, 2012, 15:38 вылезать из криокамеры пора... или по работе стоит МСВС какой-нить?
а так можно только на уровне файлов настраивая систему сборки, чтобы каждый файл со своими предупреждениями собирался... в cmake и autotools такое точно возможно... с qmake - вряд ли... Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Odyssey от Июнь 27, 2012, 15:58 Вылез бы, да только он-с самый-с...
Всё ясно, придется 200 ворнингов терпеть... Ы... Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Igors от Июнь 27, 2012, 16:07 Вылез бы, да только он-с самый-с... Кто самый? MSVC понимает эти прагмы отлично (даже древняя шестерка). Всё ясно, придется 200 ворнингов терпеть... Ы... Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: LisandreL от Июнь 27, 2012, 17:04 Кто самый? MSVC понимает эти прагмы отлично (даже древняя шестерка). МСВС (http://ru.wikipedia.org/wiki/МСВС) MSVC'у рознь.Название: Re: Отключение избранных предупреждений директивами компилятора Отправлено: Fat-Zer от Июнь 27, 2012, 18:52 а поправить то по поводу чего предупреждает ни как?
единственный ворнинг, который у меня не получилось исправить - это на си unused-parameter. на плюсах правится комментированием параметра... ещё можно самому собрать свежачок, если разрешат... с людьми говорил - им обычно только ядро трогать запрещено, а в юзерспейсе копаться - сколько душе угодно... |