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