include h 和include 。c的區別

首先引出問題:

        keil編寫c程序,有一些器件的使用,寫成文件之後,再include進去,用起來比較方便。

      寫成頭文件,再  include “xxxx.h”
      和  寫成源文件,再  include “xxxx.c”

      調試了都可以,但我不知  這從 原理 上有什麼區別?

問題解答:

     

(1)#include 指令

該指令指示編譯器將xxx.xxx文件的全部內容插入此處,也就說 #include等效於複製、粘貼, 另外編譯器會編譯.c文件,不會編譯.h文件

舉例說明:

      假設有a.c和b.c,b.c中include a.c。實際相當於直接把a.c插入b.c中include的位置,編譯的是b.c

     假設有a.c,a.h和b.c,b.c中include a.h。一般.h寫的都只是聲明(函數聲明,外部變量聲明等)。
     此時首先是將a.h插入b.c中include的位置。然後編譯a.c,輸出a.o,編譯b.c,輸出b.o。
     編譯時由於b.c中引入a.h,所以對於a中的函數或變量有聲明,據此編譯器認爲此函數或變量在某個文件中是存在的,便不會報錯。
     最後再進行鏈接,輸出目標文件。

     假如是個大工程,都採用include c文件的方式,某個c文件修改過後,編譯時需要全部重新編譯。如果引入的是h文件,沒做修改的部分便不需要再次編譯。    
  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章