注册 登录
查看: 464|回复: 17

关于C文件与H文件联系的问题

[复制链接]
发表于 2014-7-21 18:20:57 | 显示全部楼层 |阅读模式
     你好,我是个大二学生,是个编程的初学者,之前写程序都是一个文件,现在想学着用多个文件进行模块化进行编程,但是对如何将多个文件联系起来不是很懂,比如说:
      我的工程中添加了两个C文件,分别为1.C和2.C,现在1C想要调用2C中的函数,那我就有两种方式。方式一:在1C中写#include“2.c”,这样写后,是不是就可以直接引用2.C中的函数,而不用进行任何声明,而且在2.C中的全局变量,1.C中也可以直接引用,也不用进行声明,而且是不是变量的值是2.C的最终值。          方式二:创建一个2.H文件,并在2.H中进行声明我所用的函数,然后在1.C中写#include“2.H”,这样我是不是就可以直接在1.C中直接引用2.C中的函数了?而2.C的全局变量在1.C中是不是仍然可以直接引用?还有一个问题,就是关于2.H的存放与添加的问题:我所创建的2.H文件应该放到哪里?是与2.C存放在一个地方,还是随便?在工程中,用不用将2.H文件添加入工程?
    这个就是我的一点问题,麻烦大神帮忙解决一下
回复

使用道具 举报

发表于 2014-7-21 18:22:17 | 显示全部楼层
不要用第一种方法,会出现各种乱七八糟的问题
回复 支持 反对

使用道具 举报

发表于 2014-7-21 18:22:50 | 显示全部楼层
山外的工程模块化就做得很好,你看几个工程就会模仿了,都是用第二种方案的
回复 支持 反对

使用道具 举报

发表于 2014-7-21 18:23:38 | 显示全部楼层
头文件可以随便放,编译器找不到的时候就在c/c++选项里添加头文件路径就可以了
回复 支持 反对

使用道具 举报

发表于 2014-7-21 18:46:06 | 显示全部楼层
那还不赶紧看书呀,,你所说的方式一我就没看到过更没用过,都是用方式二,

文件的全局变量只要加关键词extern等外部声明就可以在别的文件使用
回复 支持 反对

使用道具 举报

发表于 2014-7-21 19:37:47 | 显示全部楼层
方式二比较好
回复 支持 反对

使用道具 举报

发表于 2014-7-21 20:49:48 | 显示全部楼层
方式二好,将自己在c中配置的函数,在H中声明一下,然后哪个C需要用这个C中的函数,只需#include “XXX.H”就行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-21 23:39:06 | 显示全部楼层
笪芳馥 发表于 2014-7-21 18:22
不要用第一种方法,会出现各种乱七八糟的问题

哦,那要不要再工程中将自己创建的头文件,像C文件一样加到工程中,我看到有的工程中加了,但有的没加,所以有点搞不清了      
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-21 23:41:08 | 显示全部楼层
吕一瑾 发表于 2014-7-21 18:22
山外的工程模块化就做得很好,你看几个工程就会模仿了,都是用第二种方案的

强烈支持,非常感谢哥们
那要不要将H文件像C文件一样,加到工程中,我看有的工程中加了,但有的没加,所以有点糊涂了,还请帮忙解答一下
回复 支持 反对

使用道具 举报

发表于 2014-7-21 23:42:34 | 显示全部楼层
我这有KEIL同一工程的多文件处理资料,看看这个,看完你就明白啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-21 23:43:01 | 显示全部楼层
flyleaf 发表于 2014-7-21 18:23
头文件可以随便放,编译器找不到的时候就在c/c++选项里添加头文件路径就可以了

那要不要将H文件加到工程中,因为这个H文件是自己创建的,不是库的头文件,我看有的加了,有的没加,都迷糊了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-21 23:45:37 | 显示全部楼层
904346841 发表于 2014-7-21 20:49
方式二好,将自己在c中配置的函数,在H中声明一下,然后哪个C需要用这个C中的函数,只需#include “XXX.H” ...

恩,那自己创建的H文件要不要像添加C文件一样,添加到工程中,因为这个不是库的头文件,我看有的工程中添加了,有的没添加,自己有点犯迷糊了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-22 00:04:25 | 显示全部楼层
兜兜有糖 发表于 2014-7-21 23:42
我这有KEIL同一工程的多文件处理资料,看看这个,看完你就明白啦!

强烈支持,非常感谢哥们
恩,关于H文件创建时要注意的问题我懂了,谢谢啦
但是还有一个小问题,就是自己创建的H文件要不要像C文件一样添加到工程中,或者说什么时候加,什么时候不加,我看有的工程中添加了,有的没添加,麻烦你啦
回复 支持 反对

使用道具 举报

发表于 2014-7-22 09:19:31 | 显示全部楼层
风驰 发表于 2014-7-21 23:45
恩,那自己创建的H文件要不要像添加C文件一样,添加到工程中,因为这个不是库的头文件,我看有的工程中添 ...

不用放,放也没问题~
回复 支持 反对

使用道具 举报

发表于 2014-7-22 10:05:58 | 显示全部楼层
风驰 发表于 2014-7-22 00:04
强烈支持,非常感谢哥们
恩,关于H文件创建时要注意的问题我懂了,谢谢啦
但是还有一个小问 ...

头文件一般放函数定义和变量定义,.h文件可以任意调用移植,当你.c文件需要某些定义声明时,就添加.h文件
回复 支持 反对

使用道具 举报

发表于 2014-7-22 11:15:27 | 显示全部楼层
风驰 发表于 2014-7-22 00:04
强烈支持,非常感谢哥们
恩,关于H文件创建时要注意的问题我懂了,谢谢啦
但是还有一个小问 ...

你#include了这个.hkeil自动把这H加到你的C目录下了,哪个C,,,#include哪个就有这.H
回复 支持 反对

使用道具 举报

发表于 2014-7-24 18:57:36 | 显示全部楼层
你说的,我也问过fire,我跟他意见一致,就是严格的程序为声明和定义,如果用的另一个c文件中的函数,就要include,并且这些定义c文件跟声明h文件都要加到工程,但是如果是一个子文件中的,如果在c/c++选项卡中指明了h文件的查找路径,那么就可以不用添加入工程
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-24 19:01:00 | 显示全部楼层
火良 发表于 2014-7-24 18:57
你说的,我也问过fire,我跟他意见一致,就是严格的程序为声明和定义,如果用的另一个c文件中的函数,就要i ...

哦,谢谢啦,你的名字怎么跟山外哥一样?
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回列表 返回顶部