使用不同头文件中的同名结构体的问题

Michael_Xin_CV 2014-01-15 11:34:35

问题是这样的:
有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
...全文
2944 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-01-16
  • 打赏
  • 举报
回复
过奖过奖!
Michael_Xin_CV 2014-01-16
  • 打赏
  • 举报
回复
引用 3 楼 u013381678 的回复:
将两个结构体的共性抽出来,最好是合为一个结构体。
这两个头文件和库是第三方提供的,复杂的很,不是我自己写的
liyn_015739 2014-01-16
  • 打赏
  • 举报
回复
将两个结构体的共性抽出来,最好是合为一个结构体。
飞天御剑流 2014-01-16
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
[quote=引用 6 楼 supermegaboy 的回复:] [quote=引用 楼主 maxim_sin 的回复:] 问题是这样的: 有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
可以通过如下方法解决:

#include "A.h"
#define S U
#include "B.h"
然后B中的S就变成U了,U这个名称要小心选择,不要扰乱B.h中的其它名称。 [/quote] #define S A_S #include "A.h" #define S B_S #include "B.h"[/quote] 真不愧为未定义行为大师啊
飞天御剑流 2014-01-16
  • 打赏
  • 举报
回复
引用 7 楼 baipv008 的回复:
[quote=引用 6 楼 supermegaboy 的回复:] [quote=引用 楼主 maxim_sin 的回复:] 问题是这样的: 有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
可以通过如下方法解决:

#include "A.h"
#define S U
#include "B.h"
然后B中的S就变成U了,U这个名称要小心选择,不要扰乱B.h中的其它名称。 [/quote] 应该把#define S U 放在B.h里,否则B.c里没有这个定义,就会出错。[/quote] 这个过虑了,不需要这样做。楼主说那是两个厂商给的库,不可能以源码的方式给你。
赵4老师 2014-01-16
  • 打赏
  • 举报
回复
引用 6 楼 supermegaboy 的回复:
[quote=引用 楼主 maxim_sin 的回复:] 问题是这样的: 有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
可以通过如下方法解决:

#include "A.h"
#define S U
#include "B.h"
然后B中的S就变成U了,U这个名称要小心选择,不要扰乱B.h中的其它名称。 [/quote] #define S A_S #include "A.h" #define S B_S #include "B.h"
千树之影 2014-01-16
  • 打赏
  • 举报
回复
引用 6 楼 supermegaboy 的回复:
[quote=引用 楼主 maxim_sin 的回复:] 问题是这样的: 有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
可以通过如下方法解决:

#include "A.h"
#define S U
#include "B.h"
然后B中的S就变成U了,U这个名称要小心选择,不要扰乱B.h中的其它名称。 [/quote] 应该把#define S U 放在B.h里,否则B.c里没有这个定义,就会出错。
飞天御剑流 2014-01-16
  • 打赏
  • 举报
回复
引用 楼主 maxim_sin 的回复:
问题是这样的: 有两个头文件A.h和B.h(是两个厂商提供的库),这两个头文件中都定义了同一个名字的结构体S,我现在要在C.cpp中使用A和B类,所以include了A.h和B.h这两个类,于是就报重复定义结构体S,请问如何解决这个问题?
可以通过如下方法解决:

#include "A.h"
#define S U
#include "B.h"
然后B中的S就变成U了,U这个名称要小心选择,不要扰乱B.h中的其它名称。
vipcxj 2014-01-16
  • 打赏
  • 举报
回复
这就是C杯具的地方啊,C++的库一般都有个命名空间,基本不怕重名
Michael_Xin_CV 2014-01-15
  • 打赏
  • 举报
回复
引用 1 楼 derekrose 的回复:
这两个结构体完全一样吗?除了名字之外
不完全一样的...
derekrose 2014-01-15
  • 打赏
  • 举报
回复
这两个结构体完全一样吗?除了名字之外

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧