我們平時包含的 stdio.h 頭文件,里面是不是實現了 printf 函數?
為什么會有這個疑問?因為每次使用 printf,就得包含 stdio.h ,這就導致很多同學誤以為,stdio.h 里面實現了 printf。
實際上并不是,這里就涉及了頭文件和庫的區別。
頭文件一般存放大家都要用的東西,比如函數的聲明,結構體的聲明,命名新的類型等等。
stdio.h 頭文件,里面也只是聲明了一下 printf 函數,作用就是告訴編譯器,printf 是個函數,編譯的時候不要報錯。
至于 printf 的實現,在一個名字類似于 libc.so 這樣的文件中。
.so 是 Linux 下的動態庫文件,里面存放了各個函數的實現,不過他也屬于二進制文件,想要看 printf 的具體實現,還得去其他地方找源碼。
所以,千萬不要再以為,包含 stdio.h 是因為里面實現了 printf。
那頭文件里面能不能實現函數?反正頭文件也只是在預處理的時候展開,想要在里面寫什么都行。
不過會有這樣的情況發生。
比如 1.h 實現了函數 test,1.c 和 2.c 都包含了 1.h,編譯的時候,就會提示函數 test 重復定義。
還有一個類似的問題,頭文件里面能不能定義變量,這個問題大家怎么看,如果你也遇到過這樣的情況,歡迎在評論區交流。
-
函數
+關注
關注
3文章
4327瀏覽量
62569 -
Stdio
+關注
關注
0文章
2瀏覽量
7513 -
Printf
+關注
關注
0文章
83瀏覽量
13649
原文標題:stdio.h 實現了 printf 函數?
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論