g++: Как отключить определенный устаревший или устаревший заголовок?

Мы используем g++ 4.4.3, и одна из наших сторонних библиотек вызывает прекрасную ошибку

/usr/include/c++/4.4/backward/backward_warning.h:28:2: предупреждение: #warning Этот файл содержит как минимум один устаревший или устаревший заголовок, который может быть удален без предварительного уведомления в будущем. Вместо этого используйте нерекомендуемый интерфейс с эквивалентной функциональностью. Список сменных заголовков и интерфейсов можно найти в файле back_warning.h. Чтобы отключить это предупреждение, используйте -Wno-deprecated.

Так как это сторонняя библиотека, я не могу исправить проблему, поэтому я просто хочу сказать компилятору подавить это предупреждение для одного H-файла, который вызывает проблему.

Я попробовал несколько вещей с

#pragma GCC diagnostic ignored "-Wdeprecated"

но я не могу найти, какое предупреждение нужно указать (нет "-Wdeprecated").

Итак, есть ли способ подавить это предупреждение только для одного оскорбительного H-файла? Я надеюсь сделать что-то вроде этого:

// Turn off the warning
#pragma GCC diagnostic ignored "-Wdeprecated"
#include "BadFile.h"
// Turn the warning back on
#pragma GCC diagnostic warning "-Wdeprecated"

person Betty Crokker    schedule 21.01.2013    source источник


Ответы (1)


Я не мог найти способ сделать это с помощью прагмы, только передав -Wno-deprecated в командной строке. Итак, если вы в отчаянии, вы можете попробовать:

#undef __DEPRECATED

// include offensive headers here...

#define __DEPRECATED

Но обратите внимание, что я определенно не одобряю неопределение системного уровня #defines :-P

person JW Peterson    schedule 04.02.2013