免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3669 | 回复: 5
打印 上一主题 下一主题

多个动态库使用同一头文件时的头文件组织问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-27 10:56 |只看该作者 |倒序浏览
本帖最后由 alazer 于 2010-09-27 10:57 编辑

一个类在动态库A中include,在动态库B中也include,主程序使用A和B两个库,此时有什么好的方法使2个动态库文件独立,我说的不太好理解,具体比如

动态库A
A_DLL.H
  1. #include "share_xyz.h"
  2. A_DLL
  3. {
  4.        //使用share_xyz.h中的某种定义
  5. }
复制代码
动态库B
B_DLL.H
  1. #include "share_xyz.h"
  2. B_DLL
  3. {
  4.        //使用share_xyz.h中的某种定义
  5. }
复制代码
而主程序中需要使用A和B动态库,此时必然include A_DLL.H 和B_DLL.H
  1. #include "A_DLL.h"
  2. #include "B_DLL.h"

  3. int main()
  4. {
  5.     //使用A和B动态库的接口函数.
  6. }
复制代码
在这种情况下由于share_xyz.h会被include2次(虽然share_xyz.h中会有#ifndef #endif之类的,从而只会被include一次)
就造成了一旦A或B改动了share_xyz.h时,可能因为#include的顺序关系,而不会启用。

你们在这种情况下,对文件如何组织的???

论坛徽章:
0
2 [报告]
发表于 2010-09-27 11:05 |只看该作者
没人关注啊

论坛徽章:
0
3 [报告]
发表于 2010-09-27 11:17 |只看该作者
A和B只在.cpp实现文件中include "share_xyz.h",不在自己的头文件中包含

如果主程序需要使用"share_xyz.h",那就自己包含

论坛徽章:
0
4 [报告]
发表于 2010-09-27 12:14 |只看该作者
多谢楼上
但是
"A和B只在.cpp实现文件中include "share_xyz.h",不在自己的头文件中包含"
这就意味这A/B的头文件只能引用"share_xyz.h"定义的类名称(指针格式),而无法使用share_xyz.h中定义的某些结构等

论坛徽章:
0
5 [报告]
发表于 2010-09-27 12:31 |只看该作者
一个类在动态库A中include,在动态库B中也include,主程序使用A和B两个库,此时有什么好的方法使2个动态库文 ...
alazer 发表于 2010-09-27 10:56


要避免重复include的问题,用ifdef就可以解决了,include目录下有大量的头文件中有这样的例子,grep一下直接模仿就可以了。

论坛徽章:
0
6 [报告]
发表于 2010-09-27 13:45 |只看该作者
改动的放到一个新的文件中?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP