免费注册 查看新帖 |

Chinaunix

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

最近在看一个开源的项目,里面有个很诡异的事情,大家来帮忙看看吧.. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-04 16:49 |只看该作者 |倒序浏览
在Com_io.c里面有个结构的定义引用了REM_open_driver这个函数
struct transport rem_trans =
{
        REM_open_driver,
        REM__open_quiet,
        REM_stabilize,
        REM_kill_driver,
....
}
这个c文件#include "transport.h",并且transport.h也有REM_open_driver这个函数的声明
但是我找REM_open_driver的定义的时候发现有2个.c文件都实现了这个函数
Io_fifo.c (grass-6.2.1\lib\raster):int REM_open_driver(void)
Io_sock.c (grass-6.2.1\lib\raster):int REM_open_driver(void)

但是这两个c文件都没有包含transport.h

请问这样做有错误吗?找了一下午了....
ps:这是一个gis开源项目的代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-01-04 16:56 |只看该作者
这两个c文件为什么要包含transport.h?

论坛徽章:
0
3 [报告]
发表于 2007-01-04 17:04 |只看该作者
Com_io.c想找到transport.h里面声明函数的定义啊,
如果那定义的c文件没有包含transport.h,Com_io.c就不能找到定义啊

如果有错误,还请指教

论坛徽章:
0
4 [报告]
发表于 2007-01-04 17:06 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2007-01-04 17:08 |只看该作者
原帖由 wraith1234 于 2007-1-4 17:04 发表
Com_io.c想找到transport.h里面声明函数的定义啊,
如果那定义的c文件没有包含transport.h,Com_io.c就不能找到定义啊

如果有错误,还请指教

定义的文件包含头文件通常是考虑声明定义有不一致,没有必要包含,.c找定义是连接的事情,编译不用,只要不让连接器看到,定义100个一样的函数都可以.

论坛徽章:
0
6 [报告]
发表于 2007-01-04 17:09 |只看该作者
楼主还是补补基础吧,别老师别人让多看代码你就看, 看些简单的,比如简单命令的代码,里面内容确很丰富

论坛徽章:
0
7 [报告]
发表于 2007-01-04 17:11 |只看该作者
......
我看了不少的c的书籍,但是实际用起来还是有点生疏,大家帮帮我啊.我想好好把这个开源项目的代码看看

论坛徽章:
0
8 [报告]
发表于 2007-01-04 17:14 |只看该作者
帮你?

论坛徽章:
0
9 [报告]
发表于 2007-01-04 17:16 |只看该作者
那Com_io.c里面需要REM_open_driver这个函数,但是同时有2个实现,编译的时候怎么知道要找哪个呢?

论坛徽章:
0
10 [报告]
发表于 2007-01-04 17:18 |只看该作者
原帖由 flw2 于 2007-1-4 17:14 发表
帮你?

......
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP