嵌入式工程師,你知道.c檔案和.h的區別嗎?

qingfeng_96發表於2018-10-15

.c檔案是程式設計中的一個重要概念。所謂“檔案”一般是指儲存在外部介質上資料的集合。一批檔案是以資料的形式存放在外部介質(如磁碟)上的。作業系統是以檔案為單位對資料進行管理的,也就是說,如果想找存在外部介質上的資料,必須先按檔名找到指定的檔案,然後再從該檔案中讀取資料。要向外部介質上儲存資料也必須先建立一個檔案(以檔名標識),才能向它輸出資料。

    

1 .h檔案作用

  方便開發:包含一些檔案需要的共同的常量,結構,型別定義,函式,變數申明;

  提供介面:對一個軟體包來說可以提供一個給外界的介面(例如: stdio.h)。

 

2 .h檔案裡應該有什麼

  常量,結構,型別定義,函式,變數申明。

 

3 .h檔案不應該有什麼 

       變數定義, 函式定義。

 

4 extern問題 

        對於變數需要extern;對於函式不需要,因為函式的預設狀態是extern的。如果一個函式要改變為只在檔案內可見,加static。

 

5 include包含問題

  雖然申明和型別定義可以重複,不過推薦使用條件編譯。 #ifndef_FILENAME_H #define_FILENAME_H …… #endif

 

6 應該在那兒包含.h檔案

  在需要的地方,比如某個提供介面的h檔案僅僅被1.c檔案需要,那麼就在1.c檔案裡包含。

 

  編寫的程式一般會有.h檔案和相對應的.c檔案,.h檔案是宣告所用,.c檔案是其函式實現部分。在呼叫時只要包含.h檔案即可,我們沒有聽說過#include “delay.c”這類的程式,同時也不提倡使用這個形式。

  

在delay.h檔案中:

        //對呼叫的函式宣告 

       #ifndef__DELAY_H__ #define__DELAY_H__

  externvoidDelayms(unsigned int n); #endif

 

在delay.c檔案中:

        //函式實現部分

        #include

  //for crystal11.0592M

  voidDelayms(unsigned int n) {

  unsignedinTI,j; for(j=n;j》0;j--) for(i=112;i》0;i--); }

 

在主程式main.c中:

  #include //在主程式包含.h檔案,不能包含.c檔案 ……

 

 

上述方法仍然要求每建立一個工程就需要把對應的標頭檔案複製到工程的資料夾裡,這樣看來仍然是比較麻煩的,這時還有另外一種方法就是將做好的標頭檔案放在一個資料夾中,然後將這個資料夾整體拷貝到.KEILC51軟體的安裝INC資料夾下面(inc資料夾包含各種標頭檔案),以後若需要使用某個標頭檔案,就如使用KEIL自帶的標頭檔案一樣方便了,在主函式mani()之前有一句#include 就可以在main()中使用其中的函式了。

 

來自網路,部分修改

相關文章