首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁止使用GCC警告“#include指令末尾的额外标记”

禁止使用GCC警告“#include指令末尾的额外标记”
EN

Stack Overflow用户
提问于 2013-01-11 22:53:26
回答 2查看 2.9K关注 0票数 3

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

代码语言:javascript
运行
复制
#include <stdio.h> nolist

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

代码语言:javascript
运行
复制
S88USF.c:139:21: warning: extra tokens at end of #include directive

我如何才能抑制这个特殊的警告呢?

注:在这种情况下,类似的问题已经被问到了,正确的答案是“不要给gcc任何抱怨的理由”。然而,在这个场景中,我明确希望让#include指令保持原样。

我知道我在做什么,我只是不知道怎么把这件事告诉gcc。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-11 23:00:49

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

GCC将接受这一点:

代码语言:javascript
运行
复制
#define nolist
#include <stdlib.h> nolist
/* maybe #undef nolist here */
票数 2
EN

Stack Overflow用户

发布于 2013-01-11 22:59:44

一种解决方法是定义包含以下预处理器或宏的标头:

代码语言:javascript
运行
复制
//hp_workaround.h
#ifdef HP_
#define HP_INCLUDE_DIRECTIVE(x) x
#else
#define HP_INCLUDE_DIRECTIVE(x) 
#endif

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

代码语言:javascript
运行
复制
#include "hp_workaround.h"
#include <stdio.h> HP_INCLUDE_DIRECTIVE(nolist)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14280630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档