在#include指令结束时禁止GCC警告“额外令牌”

我正在用C语言编写一个程序,用于在HP NonStop机器上编译和运行。 但是,我想在运行Linux的工作站上进行主要开发。 HP NonStop C编译器需要非标准的#include指令,如下所示:

#include  nolist 

对于每个#include指令,我的工作站的GCC抱怨:

 S88USF.c:139:21: warning: extra tokens at end of #include directive 

我该怎样抑制这个特别警告?

注意:在SO上,已经提出了类似的问题,正确的答案是“不要让gcc首先抱怨任何理由”。 但是,在这种情况下,我明确地希望完全按原样使用#include指令。

我知道我在做什么,我只是不知道如何通知gcc。

包含内部的宏观扩展可能会有所帮助。

海湾合作委员会将接受此:

 #define nolist #include  nolist /* maybe #undef nolist here */ 

一种解决方法是定义包含以下preproccesor宏的标头:

 //hp_workaround.h #ifdef HP_ #define HP_INCLUDE_DIRECTIVE(x) x #else #define HP_INCLUDE_DIRECTIVE(x) #endif 

然后用这个宏保护你的指令

 #include "hp_workaround.h" #include  HP_INCLUDE_DIRECTIVE(nolist)