3

我正在用 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。

4

2 回答 2

8

一种解决方法是定义一个包含以下 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)
于 2013-01-11T14:59:44.007 回答
2

在 include 中发生的宏扩展可能会有所帮助。

GCC 将接受这一点:

#define nolist
#include <stdlib.h> nolist
/* maybe #undef nolist here */
于 2013-01-11T15:00:49.463 回答