6

我们正在使用 g++ 4.4.3,我们的第三方库之一导致了这个可爱的错误

/usr/include/c++/4.4/backward/backward_warning.h:28:2: 警告:#warning 此文件包含至少一个已弃用或过时的标头,将来可能会在不另行通知的情况下将其删除。请改用具有等效功能的非弃用接口。有关替换标头和接口的列表,请参阅文件 backward_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"
4

1 回答 1

0

我无法想出使用编译指示的方法,只能通过在命令行上传递 -Wno-deprecated 。因此,如果您感到绝望,可以尝试:

#undef __DEPRECATED

// include offensive headers here...

#define __DEPRECATED

但请注意,我绝对不会容忍 undef'ing 系统级别 #defines :-P

于 2013-02-04T17:21:49.273 回答