社区
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()呢?
按照什么路线来找的?
...全文
749
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语言
头文件
C语言
头文件
,C语言
头文件
,C语言
头文件
,C语言
头文件
,C语言
头文件
getchar
是C语言中的一个标准
库函数
.docx
getchar
是C语言中的一个标准
库函数
,以下是关于
getchar
的详细介绍: 一、功能
getchar
函数的主要功能是从标准输入(通常是键盘)读取一个字符,并将其作为int类型返回。这个函数通常用于从键盘获取用户输入。 二、函数原型 c int
getchar
(void); 三、返回值
getchar
函数返回的是用户输入的字符的ASCII码值,其类型为int。 如果到达文件末尾或发生读错误,
getchar
函数会返回EOF(End Of File),这是一个特殊的值,通常用于表示已经读取到了文件或输入流的末尾。在C语言中,EOF通常被定义为-1。 四、使用方式
包含
头文件
:在使用
getchar
函数之前,需要
包含
stdio
.h
头文件
,因为
getchar
函数是定义在这个
头文件
中的。 等待输入:当
程序
调用
getchar
函数时,
程序
会等待用户按键输入。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。 读取字符:当用户键入回车之后,
getchar
函数才开始从stdin流中每次读入一个字符。如果用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,
C标准
库函数
的
头文件
.docx
。。。
C语言
程序
设计(第2版)-2期 常见问题3-2使用
库函数
忘写文件
包含
.pdf
C语言
程序
设计(第2版)-2期 常见问题3-2使用
库函数
忘写文件
包含
.pdf 学习资料 复习资料 教学资源
C语言
70,019
社区成员
243,267
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章