我們在寫單片機程序的時候,第一行都會包含 reg51.h,于是就有同學提出了疑問,為什么不需要包含 stdio.h?
如果從C語言本身來講,一個完整的 C 代碼并不需要包含頭文件。
標準中也提到,程序的入口是 main 函數(shù),它應該有個整型返回值,參數(shù)可有可無。
所以一個最簡單的 C 代碼應該是這樣。
int main(void)
{
return 0;
}
至于它的返回值,即使寫成 void,很多編譯器也不會提示問題。
那我們學習C語言的時候,為什么在第一行加上 stdio.h?
因為在代碼中用到了 printf,使用函數(shù),就得提前聲明,告訴編譯器它是個函數(shù),并且函數(shù)原型是什么樣。
而 printf 函數(shù)的聲明,就放在了 stdio.h 里面。
如果程序里面用不到輸入輸出相關的函數(shù),完全可以不包含 stdio.h。
再回到 51 單片機上。
作為一個裸機程序,很多時候,我們用不到 printf,所以也就很少包含 stdio.h。
包含 reg51.h,主要還是因為這里面定義了很多寄存器,比如點燈需要用到的 P1 等等,打開 reg51.h,你會發(fā)現(xiàn),它其實就是個地址。
-
單片機
+關注
關注
6076文章
45495瀏覽量
670438 -
C語言
+關注
關注
183文章
7644瀏覽量
145605 -
函數(shù)
+關注
關注
3文章
4417瀏覽量
67521 -
編譯器
+關注
關注
1文章
1672瀏覽量
51618
原文標題:C語言并不是非要包含stdio.h
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
庫文件stdlib.h和stdio.h不支持utoa()和snprintf()
ucos在PC機上的應用提示無法打開stdio.h文件
在嵌入式處理器環(huán)境中為什么匯編語言不需要堆棧?
嵌入式開發(fā)中C語言編程的相關資料分享
編譯顯示fatal error: stdio.h: No such file or directory怎么解決?
基于單片機設計的軟件時鐘C語言程序
一些常見的C語言字符串操作
C語言如何實現(xiàn)Hello xiaolin
“不需要點表的工業(yè)網(wǎng)關”如何實現(xiàn)松下FPG-C32T2H數(shù)據(jù)采集和遠程維護的物聯(lián)網(wǎng)解決方案
C語言為什么不需要包含stdio.h
評論