当前位置: 技术问答>linux和unix
求助Linux宏定义
来源: 互联网 发布时间:2017-03-09
本文导语: 编译器 g++ 有个文件A.h 里面有定义 #define _GNU_SOURCE 若有 B.h 包含 A.h ,则编译正常通过 若同时有 B.h 与 C.h 包含 A.h ,则编译不过,报 _GNU_SOURCE 重定义 注:类似该操作在 Windows 下是能正常编译通过的 为什...
编译器 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
有个文件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 至于为什么,只能查找文档了。
比如我有一处
#ifdef ABC
#error
#endif
那么如果#define ABC 就会出错。
_GNU_SOURCE 这个GUN可能在哪里限定了重复define 至于为什么,只能查找文档了。