A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

可爱的小炒肉

中级黑马

  • 黑马币:15

  • 帖子:41

  • 精华:0

RT    今天讲到多文件开发这部分   但是不是很明白

25 个回复

倒序浏览
慢慢来吧
回复 使用道具 举报
       include的作用仅仅是复制,将.h文件复制粘贴过来,因为.h文件中放的是函数的声明,而调用函数之前必须要对函数进行声明,目的是在编译时,告诉程序在文件中有这个函数。
       在进行链接时,就会将程序中所有的函数进行链接,这个时候才会检测程序中是否有这个函数。
所以,include不能调用函数,只是声明函数。即使不写include,只要函数定义了,程序也只会警告,不会报错。
回复 使用道具 举报
张晓珊 发表于 2015-5-27 01:08
include的作用仅仅是复制,将.h文件复制粘贴过来,因为.h文件中放的是函数的声明,而调用函数之前必 ...

最后一句不科学吧?怎么会不报错呢。不写include系统链接的时候才能找到函数,编译不应该通过吧?
回复 使用道具 举报
在同一个文件夹或者编译器目录或者系统目录,放置了.c的.h文件可以直接在头文件中双引号里面起声明的作用,你执行的文件在上述目录中可以访问.h文件进行声明,就相当于访问了其他文件的.c文件,这是功能用法,没有为什么(个人观点)
回复 使用道具 举报
蜡笔小炎 发表于 2015-5-27 01:20
最后一句不科学吧?怎么会不报错呢。不写include系统链接的时候才能找到函数,编译不应该通过吧? ...

编译只是检测语法错误,链接才会找函数,这是两个步骤,编译会警告,但不会报错。链接是把所有的文件和库函数链接起来,这个时候才会检测函数是否实现了,所以编译能通过。注意是把所有的文件哦,如果函数在的那个文件没有参与编译与链接,即使你加上incude "xxx.h",编译也不会通过。
回复 使用道具 举报
张晓珊 发表于 2015-5-27 13:15
编译只是检测语法错误,链接才会找函数,这是两个步骤,编译会警告,但不会报错。链接是把所有的文件和库 ...

我想报第10期试试,你报那一期啊?
回复 使用道具 举报
蜡笔小炎 发表于 2015-5-27 15:11
我想报第10期试试,你报那一期啊?

第10期啊
回复 使用道具 举报

你流程走到哪了?怎么样,还顺利吗
回复 使用道具 举报
蜡笔小炎 发表于 2015-5-27 16:07
你流程走到哪了?怎么样,还顺利吗

准备入学考试了
回复 使用道具 举报
本帖最后由 sunda1314520 于 2015-5-27 18:00 编辑

#include标记的头文件中的函数声明会被加入到目标文件中,然后经历过编译、链接,生成正确的目标程序。
回复 使用道具 举报
张晓珊 发表于 2015-5-27 13:15
编译只是检测语法错误,链接才会找函数,这是两个步骤,编译会警告,但不会报错。链接是把所有的文件和库 ...

你分析很对,但是应该从更高一个层次去解答楼主的疑问。这个层次是:这是编译器的机制。.h里的声明文件相同于一个函数索引列表。编译器定义:要让程序运行期来,它先去编译,找到要用到的函数是否在索引列表。然后。。。。。才是你说的那些。。。。。。
回复 使用道具 举报
都是第十期的吗?
回复 使用道具 举报
yuang4074 发表于 2015-5-28 15:06
你分析很对,但是应该从更高一个层次去解答楼主的疑问。这个层次是:这是编译器的机制。.h里的声明文件相 ...

这么底层的东西对于现在的我们来说没有作用吧?专注这些不切实际啊!
回复 使用道具 举报
很简单,相当于拷贝文件内容
回复 使用道具 举报
学习啦,加油!
回复 使用道具 举报
函数只要声明了就可以调用啊
放在什么位置并没有任何关系
在.c文件中和在.h文件里 本质没有区别的
回复 使用道具 举报
楼上的说的很对.include只是包含不是调用.跟后面OC中import一样用法
回复 使用道具 举报
15578797612 发表于 2015-5-28 15:07
都是第十期的吗?

应该都是打算报名的
回复 使用道具 举报
张晓珊 发表于 2015-5-29 00:41
应该都是打算报名的

哈哈哈,说的是
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马