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

时间:2013-01-11 14:53:26

标签: c gcc warnings compiler-warnings gcc-warning

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

#include <stdio.h> nolist

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

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

如何抑制此特定警告?

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

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

2 个答案:

答案 0 :(得分:7)

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

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

然后使用此宏

保护您的指令
#include "hp_workaround.h"
#include <stdio.h> HP_INCLUDE_DIRECTIVE(nolist)

答案 1 :(得分:2)

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

GCC将接受这一点:

#define nolist
#include <stdlib.h> nolist
/* maybe #undef nolist here */