我們平時包含的 stdio.h 頭文件,里面是不是實現(xiàn)了 printf 函數(shù)?
為什么會有這個疑問?因為每次使用 printf,就得包含 stdio.h ,這就導(dǎo)致很多同學(xué)誤以為,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ù)?反正頭文件也只是在預(yù)處理的時候展開,想要在里面寫什么都行。
不過會有這樣的情況發(fā)生。
比如 1.h 實現(xiàn)了函數(shù) test,1.c 和 2.c 都包含了 1.h,編譯的時候,就會提示函數(shù) test 重復(fù)定義。
還有一個類似的問題,頭文件里面能不能定義變量,這個問題大家怎么看,如果你也遇到過這樣的情況,歡迎在評論區(qū)交流。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4416瀏覽量
67421 -
Stdio
+關(guān)注
關(guān)注
0文章
3瀏覽量
7729 -
Printf
+關(guān)注
關(guān)注
0文章
84瀏覽量
14718
原文標(biāo)題:stdio.h 實現(xiàn)了 printf 函數(shù)?
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
stdio.h實現(xiàn)了printf函數(shù)?
評論