社区
C语言
帖子详情
没有包含stdio.h头文件,程序是怎样找到库函数getchar()的?
小魔菇
2009-03-05 04:01:42
//#include <stdio.h>
#define EOF -1
int main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
我没有包含stdio.h这个头文件,但是程序可以执行
为什么程序可以找的到库函数getchar()和putchar()呢?
按照什么路线来找的?
...全文
758
12
打赏
收藏
没有包含stdio.h头文件,程序是怎样找到库函数getchar()的?
//#include #define EOF -1 int main() { int c; while((c = getchar()) != EOF) putchar(c); } 我没有包含stdio.h这个头文件,但是程序可以执行 为什么程序可以找的到库函数getchar()和putchar()呢? 按照什么路线来找的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ForestDB
2009-03-05
打赏
举报
回复
stdio这个头文件经常用,编译器自己自动包了。
小魔菇
2009-03-05
打赏
举报
回复
[Quote=引用 10 楼 lingyin55 的回复:]
呵呵,多思考,多动手,多问。问是怎么学习的时候总是这几句老话,但是要时时刻刻做到却不容易啊。
引用 8 楼 eclipse_2 的回复:
授人以鱼 不如授人以渔
请问楼上的各位高手
这些知识是从哪儿才能获得呢?
请不吝赐教
我可以给帖子追加分哈~
[/Quote]
有道理啊~
lingyin55
2009-03-05
打赏
举报
回复
呵呵,多思考,多动手,多问。问是怎么学习的时候总是这几句老话,但是要时时刻刻做到却不容易啊。
[Quote=引用 8 楼 eclipse_2 的回复:]
授人以鱼 不如授人以渔
请问楼上的各位高手
这些知识是从哪儿才能获得呢?
请不吝赐教
我可以给帖子追加分哈~
[/Quote]
lingyin55
2009-03-05
打赏
举报
回复
这要看编译器,能够找到是因为编译器假设了这样原型的存在,但大多数时候是不会有这种好处的,所以好的做法是不关编译器能不能帮你找到声明,你都要include进去。
[Quote=引用 6 楼 eclipse_2 的回复:]
引用 2 楼 lingyin55 的回复:
转:
包含头文件的目的是让编译器在做编译这个步骤的时候,知道函数的原型,然后可以做一些检查。
这是个好习惯。
C语言对此要求比较宽松。如果编译器没找到被函数的原型,通常会假设程序员没有犯错误;也就是说,不管调用的时候怎么写的,编译器都会假定这就是函数原型。这种处理方法很容易引起一些问题,大多数情况会在链接的时候被发现。
C++就很严格了,如果找不到函数原型直接就报错。…
[/Quote]
小魔菇
2009-03-05
打赏
举报
回复
授人以鱼 不如授人以渔
请问楼上的各位高手
这些知识是从哪儿才能获得呢?
请不吝赐教
我可以给帖子追加分哈~
小魔菇
2009-03-05
打赏
举报
回复
[Quote=引用 5 楼 wuyu637 的回复:]
编译器会自动给你加上一大堆东西,其中包括一些常用的函数头文件。
如果你用gcc,就可以用gcc -E a.c -o a.i
vim a.i
这个就是编译之前,宏替换的结果文件。宏处理这个过程添加了很多东西。
[/Quote]
哦 我是用gcc的
我去看看哈 谢谢
小魔菇
2009-03-05
打赏
举报
回复
[Quote=引用 2 楼 lingyin55 的回复:]
转:
包含头文件的目的是让编译器在做编译这个步骤的时候,知道函数的原型,然后可以做一些检查。
这是个好习惯。
C语言对此要求比较宽松。如果编译器没找到被函数的原型,通常会假设程序员没有犯错误;也就是说,不管调用的时候怎么写的,编译器都会假定这就是函数原型。这种处理方法很容易引起一些问题,大多数情况会在链接的时候被发现。
C++就很严格了,如果找不到函数原型直接就报错。
[/Quote]
哦
也就是说 头文件只是一个声明而已
而具体函数的实现是在连接的时候去找编译器的默认的库,如果默认的库里面找的到的话 就可以去执行。
但是
int main()
{
printf("aaaa\n");
}
就编译通过不了的 是找不到printf的库?
wuyu637
2009-03-05
打赏
举报
回复
编译器会自动给你加上一大堆东西,其中包括一些常用的函数头文件。
如果你用gcc,就可以用gcc -E a.c -o a.i
vim a.i
这个就是编译之前,宏替换的结果文件。宏处理这个过程添加了很多东西。
arong1234
2009-03-05
打赏
举报
回复
是的,这是默认函数原型,我忘记这个了,C语言比较恶劣的一个特性:)
[Quote=引用 2 楼 lingyin55 的回复:]
转:
包含头文件的目的是让编译器在做编译这个步骤的时候,知道函数的原型,然后可以做一些检查。
这是个好习惯。
C语言对此要求比较宽松。如果编译器没找到被函数的原型,通常会假设程序员没有犯错误;也就是说,不管调用的时候怎么写的,编译器都会假定这就是函数原型。这种处理方法很容易引起一些问题,大多数情况会在链接的时候被发现。
C++就很严格了,如果找不到函数原型直接就报错。
[/Quote]
arong1234
2009-03-05
打赏
举报
回复
除非你编译器缺省帮你包含,否则编译都过不了
lingyin55
2009-03-05
打赏
举报
回复
转:
包含头文件的目的是让编译器在做编译这个步骤的时候,知道函数的原型,然后可以做一些检查。
这是个好习惯。
C语言对此要求比较宽松。如果编译器没找到被函数的原型,通常会假设程序员没有犯错误;也就是说,不管调用的时候怎么写的,编译器都会假定这就是函数原型。这种处理方法很容易引起一些问题,大多数情况会在链接的时候被发现。
C++就很严格了,如果找不到函数原型直接就报错。
iambic
2009-03-05
打赏
举报
回复
头文件只是个函数原型声明。你要调用的在链接库里。
单片机C语言常用
头文件
.pdf
本文档主要介绍了单片机C语言中常用的
头文件
,包括assert.h、ctype.h、float.h、limits.h、math.h、stdarg.h、stddef.h、
stdio
.h、stdlib.h和string.h等。这些
头文件
提供了各种函数和宏定义,帮助开发者更方便地进行...
C语言
头文件
头文件
在C语言中扮演着非常重要的角色,它们为
程序
提供了标准的
库函数
,使得开发人员可以方便地调用各种功能,包括输入输出、数学计算、字符处理等。 1.
头文件
ctype.h ctype.h是C语言标准库中的一个
头文件
,专门...
getchar
是C语言中的一个标准
库函数
.docx
包含
头文件
:在使用
getchar
函数之前,需要
包含
stdio
.h
头文件
,因为
getchar
函数是定义在这个
头文件
中的。 等待输入:当
程序
调用
getchar
函数时,
程序
会等待用户按键输入。用户输入的字符被存放在键盘缓冲区中,直到...
C标准
库函数
的
头文件
.docx
- `getc`、`
getchar
` 和 `fgets`:用于读取字符或字符串,
头文件
为 `
stdio
.h`。 - `putc`、`putchar` 和 `fputs`:用于写入字符或字符串,同样来自 `
stdio
.h`。 2. **数学函数**: - `sin`, `cos`, `tan`:三角...
C语言
70,029
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章