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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wanzhu159 中级黑马   /  2014-5-16 16:24  /  2577 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

那个 #include <stdio.h> 这里面是printf、scanf函数的声明,如果main函数用到了这些个方法,在编译的时候不会报错,但是链接为啥不报错呢?不是没有定义吗?


评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

8 个回复

倒序浏览
无尽可能 来自手机 中级黑马 2014-5-16 16:37:49
沙发
链接就是把库函数加进来,编译时会检查语法,没有声明就会报错。

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报 1 0
#include<stdio.h>中的头文件stdio.h作用是让链接器通过头文件里的函数申明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的申明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序中。

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报
编译的过程就是检查源代码中是否有语法错误,导入 <stdio.h> 就有了printf、scanf的声明,所以编译阶段不会有警告和错误,顺利生成 .o文件。

链接的过程就是把所有相互依赖关系的.o文件 和 系统自带函数库链接生成 可执行文件 a.out 的过程,如果是 自己手写的两个相互关联的 c 源文件生成的 .o 文件,需要用 cc xx.o xxx.o 命令手动编译到一起,但是如果是 .o 文件与系统自带函数库之间的链接,系统会执行链接命令的时候替我们完成,所以,系统自带函数只需要声明,顺利通过编译即可。

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报
也就是封装了这些库文件
回复 使用道具 举报
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<stdio.h>的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输出的信息。
在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:#include"stdio.h"或者是#include<stdio.h>,这样才能调用库函数。
回复 使用道具 举报
xiaodixing 发表于 2014-5-28 16:09
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明), ...

帖子一旦改为提问结束,就不会再加分了哦!


                                                                                                                                                                                                                   【论坛版规】黑马论坛加分及其惩罚规则:
                                                                                                                                                                                                                                     http://bbs.itheima.com/thread-40602-1-1.html
回复 使用道具 举报
#include<stdio.h> 是从编译器 存放include头文件的库中查找这个头文件  
#include“stdio.h”是从当前路径开始寻找
总结一下  如果调用系统的头文件 就用<>  调用自己创建的就用 "" 。
当然当你学习的时候 你会发现 头文件都是#include "CCLayer.h" 这种形式的
添加头文件的时候 要分清楚哪个用<>  如:stdio.h用<>
当然, 也可以使用“stdio.h” 不过这样的话会消耗额外时间

。。扯多了

一般来说 : 用C++建一个项目  你需要为一个类 定义 一个头文件跟一个源文件
头文件(.h)中存放类及其成员的声明  源文件(.c   / .cpp)中存放定义(即对这个类的实现)
在main  中 只需要#include “myclass.h”就可以了  
当然 C语言中没有类 但是 依然适用。
头文件中声明一些函数的名称 源文件定义 也是一个很好的习惯。
回复 使用道具 举报
好热闹,来围观。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马