黑马程序员技术交流社区
标题:
关于printf编译连接 .c文件
[打印本页]
作者:
wanzhu159
时间:
2014-5-16 16:24
标题:
关于printf编译连接 .c文件
那个 #include <stdio.h> 这里面是printf、scanf函数的声明,如果main函数用到了这些个方法,在编译的时候不会报错,但是链接为啥不报错呢?不是没有定义吗?
作者:
无尽可能
时间:
2014-5-16 16:37
链接就是把库函数加进来,编译时会检查语法,没有声明就会报错。
作者:
二狗
时间:
2014-5-16 16:43
#include<stdio.h>中的头文件stdio.h作用是让链接器通过头文件里的函数申明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的申明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序中。
作者:
傘が咲く
时间:
2014-5-16 16:50
编译的过程就是检查源代码中是否有语法错误,导入 <stdio.h> 就有了printf、scanf的声明,所以编译阶段不会有警告和错误,顺利生成 .o文件。
链接的过程就是把所有相互依赖关系的.o文件 和 系统自带函数库链接生成 可执行文件 a.out 的过程,如果是 自己手写的两个相互关联的 c 源文件生成的 .o 文件,需要用 cc xx.o xxx.o 命令手动编译到一起,但是如果是
.o 文件与系统自带函数库之间的链接,系统会执行链接命令的时候替我们完成
,所以,系统自带函数只需要声明,顺利通过编译即可。
作者:
吉大人
时间:
2014-5-18 09:57
也就是封装了这些库文件
作者:
xiaodixing
时间:
2014-5-28 16:09
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<stdio.h>的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输出的信息。
在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:#include"stdio.h"或者是#include<stdio.h>,这样才能调用库函数。
作者:
wanzhu159
时间:
2014-5-28 16:12
xiaodixing 发表于 2014-5-28 16:09
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明), ...
帖子一旦改为提问结束,就不会再加分了哦!
【论坛版规】黑马论坛加分及其惩罚规则:
http://bbs.itheima.com/thread-40602-1-1.html
作者:
夏沫的黄昏′
时间:
2014-5-28 19:11
#include<stdio.h> 是从编译器 存放include头文件的库中查找这个头文件
#include“stdio.h”是从当前路径开始寻找
总结一下 如果调用系统的头文件 就用<> 调用自己创建的就用 "" 。
当然当你学习的时候 你会发现 头文件都是#include "CCLayer.h" 这种形式的
添加头文件的时候 要分清楚哪个用<> 如:stdio.h用<>
当然, 也可以使用“stdio.h” 不过这样的话会消耗额外时间
。。扯多了
一般来说 : 用C++建一个项目 你需要为一个类 定义 一个头文件跟一个源文件
头文件(.h)中存放类及其成员的声明 源文件(.c / .cpp)中存放定义(即对这个类的实现)
在main 中 只需要#include “myclass.h”就可以了
当然 C语言中没有类 但是 依然适用。
头文件中声明一些函数的名称 源文件定义 也是一个很好的习惯。
作者:
大龄产妇
时间:
2014-5-28 19:33
好热闹,来围观。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2