首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux宏定义

2012-09-15 
求助Linux宏定义编译器 g++有个文件A.h里面有定义#define _GNU_SOURCE若有 B.h 包含 A.h ,则编译正常通过

求助Linux宏定义
编译器 g++
有个文件A.h

里面有定义
#define _GNU_SOURCE

若有 B.h 包含 A.h ,则编译正常通过
若同时有 B.h 与 C.h 包含 A.h ,则编译不过,报 _GNU_SOURCE 重定义

注:类似该操作在 Windows 下是能正常编译通过的

为什么会出现这样的原因?

难道我必须定义为

#ifndef _GNU_SOURCE
  #define _GNU_SOURCE
#endif

这样的超长形式??
注:编译器 -D 不使用,A.h是我使用的静态库,我的开发必然包含该头文件,也就是说,对我大多数文件,都会包含 A.h

[解决办法]
这个跟实现有关的。
比如我有一处
#ifdef ABC
#error
#endif

那么如果#define ABC 就会出错。

_GNU_SOURCE 这个GUN可能在哪里限定了重复define 至于为什么,只能查找文档了。

热点排行