我們平時包含的 stdio.h 頭文件,里面是不是實現(xiàn)了 printf 函數(shù)?
為什么會有這個疑問?因為每次使用 printf,就得包含 stdio.h ,這就導致很多同學誤以為,stdio.h 里面實現(xiàn)了 printf。
實際上并不是,這里就涉及了頭文件和庫的區(qū)別。
頭文件一般存放大家都要用的東西,比如函數(shù)的聲明,結(jié)構(gòu)體的聲明,命名新的類型等等。
stdio.h 頭文件,里面也只是聲明了一下 printf 函數(shù),作用就是告訴編譯器,printf 是個函數(shù),編譯的時候不要報錯。
至于 printf 的實現(xiàn),在一個名字類似于 libc.so 這樣的文件中。
.so 是 Linux 下的動態(tài)庫文件,里面存放了各個函數(shù)的實現(xiàn),不過他也屬于二進制文件,想要看 printf 的具體實現(xiàn),還得去其他地方找源碼。
所以,千萬不要再以為,包含 stdio.h 是因為里面實現(xiàn)了 printf。
那頭文件里面能不能實現(xiàn)函數(shù)?反正頭文件也只是在預處理的時候展開,想要在里面寫什么都行。
不過會有這樣的情況發(fā)生。
比如 1.h 實現(xiàn)了函數(shù) test,1.c 和 2.c 都包含了 1.h,編譯的時候,就會提示函數(shù) test 重復定義。
還有一個類似的問題,頭文件里面能不能定義變量,這個問題大家怎么看,如果你也遇到過這樣的情況,歡迎在評論區(qū)交流。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4377瀏覽量
64556 -
Stdio
+關(guān)注
關(guān)注
0文章
2瀏覽量
7604 -
Printf
+關(guān)注
關(guān)注
0文章
84瀏覽量
14189
原文標題:stdio.h 實現(xiàn)了 printf 函數(shù)?
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【RA4L1-SENSOR】+ 串口printf 輸出
在外部中斷中將printf寫入,外部中斷LED可以翻轉(zhuǎn),但串口不可顯示,為什么?
【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——使用串口輸出打印printf實現(xiàn)
【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】使用按鍵SW1實現(xiàn)單擊,雙擊,長按等多種按鍵功能
【敏矽微ME32G070開發(fā)板免費體驗】使用JLINK的RTT功能實現(xiàn)類似串口printf打印功能
51單片機中為什么很少出現(xiàn)printf的身影

嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-使用AHT20進行環(huán)境監(jiān)測之編寫程序
C語言中的頭文件能不能重復包含
【RA-Eco-RA2E1-48PIN-V1.0開發(fā)板試用】使用Jlink RTT完成printf打印功能
C語言為什么不需要包含stdio.h
還不會嗎?三分鐘讓你速通Printf~

評論