系统头文件重新定义宏:如何告诉 gcc 忽略?

Bil*_*ill 2 c++ gcc warnings header

我有一些 Motif 代码,也使用 Xmt 小部件集中的小部件。
它包括“Xm/XmStrDefs.h”和“Xmt/ComboBox.h”。
但是,这两个文件中都定义了一些宏:

// XmStrDefs.h:
#define XmNarrowSize "arrowSize"

// ComboBox.h:
#define XmNarrowSize "arrowSize"
Run Code Online (Sandbox Code Playgroud)

这些是我不允许更改的系统头文件。我听说 gcc 能够忽略系统标头中的警告。

我如何告诉 gcc 这些标头是系统标头?

或者,如何告诉 gcc 忽略重新定义错误?

基本上,如何在不更改这些标头的情况下抑制此警告?

ken*_*ytm 5

我如何告诉 gcc 这些标头是系统标头?

使用-isystem开关。有关详细信息,请参阅http://gcc.gnu.org/onlinedocs/cpp/System-Headers.html

gcc -isystem Xm -I <rest of the nonsystem includes> ...
Run Code Online (Sandbox Code Playgroud)