我们在写单片机程序的时候,第一行都会包含 reg51.h,于是就有同学提出了疑问,为什么不需要包含 stdio.h?
如果从C语言本身来讲,一个完整的 C 代码并不需要包含头文件。
标准中也提到,程序的入口是 main 函数,它应该有个整型返回值,参数可有可无。
所以一个最简单的 C 代码应该是这样。
int main(void)
{
return 0;
}
至于它的返回值,即使写成 void,很多编译器也不会提示问题。
那我们学习C语言的时候,为什么在第一行加上 stdio.h?
因为在代码中用到了 printf,使用函数,就得提前声明,告诉编译器它是个函数,并且函数原型是什么样。
而 printf 函数的声明,就放在了 stdio.h 里面。
如果程序里面用不到输入输出相关的函数,完全可以不包含 stdio.h。
再回到 51 单片机上。
作为一个裸机程序,很多时候,我们用不到 printf,所以也就很少包含 stdio.h。
包含 reg51.h,主要还是因为这里面定义了很多寄存器,比如点灯需要用到的 P1 等等,打开 reg51.h,你会发现,它其实就是个地址。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6078文章
45579浏览量
673609 -
C语言
+关注
关注
183文章
7646浏览量
146146 -
函数
+关注
关注
3文章
4422浏览量
67842 -
编译器
+关注
关注
1文章
1672浏览量
51909
原文标题:C语言并不是非要包含stdio.h
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
库文件stdlib.h和stdio.h不支持utoa()和snprintf()
; gt;但是函数只是把错误抛在上面。但并非总是如此。我想我需要知道STDLIB。h和STDIO。h实际上是如何加载到项目中的,以及从何处来的。什么是对标准的内置库文件进行更改,这些文
发表于 01-11 11:21
ucos在PC机上的应用提示无法打开stdio.h文件
为什么我编译#includevoid main(){while(1){printf("hello world\n");}}老是提示无法打开stdio.h文件?求大神解答
发表于 04-28 23:13
嵌入式开发中C语言编程的相关资料分享
,使用库函数是不可避免的。关于使用库函数的最简单的例子就是printf()。在Linux环境下的C语言编程中,库函数包括两个部分:一种是C语言的标准库函数,例如
发表于 12-15 06:13
编译显示fatal error: stdio.h: No such file or directory怎么解决?
在编译通过命令arm-poky-linux-gnueabi-gcc test.c,编译程序时,显示fatal error: stdio.h: No such file or directory,用gcc编译不会报错!
发表于 01-10 06:35
基于单片机设计的软件时钟C语言程序
本内容提供了基于单片机设计的软件时钟C语言程序 程序如下: #pragma db oe #include reg52.h #include absacc.h #include stri
发表于 11-21 15:59
•199次下载
一些常见的C语言字符串操作
#字符串倒序输出 实现逻辑,通过strlen获取字符串长度,然后通过 len/2 进行交叉赋值,这里需要注意,不需要考虑len是奇数还是偶数的问题。 如果len是奇数,最后一个字符就不需要倒序
C语言中的头文件能不能重复包含
C语言中的头文件能不能重复包含? 比如代码写成这样,stdio.h 连续包含了两次。 #include #include int main(
stdio.h实现了printf函数?
我们平时包含的 stdio.h 头文件,里面是不是实现了 printf 函数? 为什么会有这个疑问?因为每次使用 printf,就得包含 stdio.h ,这就导致很多同学误以为,
系统c盘满了怎么清理不需要文件
统c盘满了怎么清理不需要文件 你的 c: 驱动已经满了, 电脑变慢或者无法安装更新, 这是 windows 机器常见的问题, 不用当技术专家也能腾出空间, 这篇指南用简单安全的步骤帮你找到并删除
C语言为什么不需要包含stdio.h
评论