讀《華爲C語言編程規範》——頭文件筆記

1、頭文件中適合放置接口的聲明,不適合放置實現(只用函數聲明,不要具體實現);

2、頭文件應當職責單一(一個頭文件實現簡單的統一的功能,功能過大,責任過多,可能要包含好多頭文件,當程序加載時,要加載每個包含的頭文件,會導致編譯時間過長);

3、頭文件的包含關係是一種依賴,一般來說,應當讓不穩定的模塊依賴穩定的模塊,從而當不穩定的模塊發生變化時,不會影響(編譯)穩定的模塊;

4、每一個.c文件應有一個同名.h文件,用於聲明需要對外公開的接口

5、禁止頭文件循環依賴,當頭文件循環依賴時,改動其中一個,所有的頭文件都要重新編譯;

6、.c/.h文件禁止包含用不到的頭文,節省編譯時間;但頭文件應當自包含,不能在使用對應的.c文件時,還需要添加別的.h文件才能;編譯通過;

7、爲每個文件配置一個宏,當頭文件第一次被包含時就定義這個宏,並在頭文件被再次包含時使用它以排除文件內容

    假定VOS工程的timer模塊的timer.h,其目錄爲VOS/include/timer/timer.h,應按如下方式保護:

    #ifndef VOS_INCLUDE_TIMER_TIMER_H
    #define VOS_INCLUDE_TIMER_TIMER_H
    ...

    #endif

       1)保護符使用唯一名稱;

       2)不要在受保護部分的前後放置代碼或者註釋;

      3):頭文件的版權聲明部分以及頭文件的整體註釋部分(如闡述此頭文件的開發背景、使用注意事項等)可以放在保護符(#ifndef XX_H)前面。

8、禁止在頭文件中定義變量,在頭文件中定義變量,將會由於頭文件被其他.c文件包含而導致變量重複定義。

9、只能通過包含頭文件的方式使用其他.c提供的接口,禁止在.c中通過extern的方式使用外部函數接口、變量

10、包含標準庫頭文件用尖括號<>,包含非標準庫頭文件用雙引號“”

建議:

1、一個模塊通常包含多個.c文件,建議放在同一個目錄下,目錄名即爲模塊名。爲方便外部使用者,建議每一個模塊提供一個.h,文件名爲目錄名。需要注意的是,這個.h並不是簡單的包含所有內部的.h,它是爲了模塊使用者的方便,對外整體提供的模塊接口。

2、如果一個模塊包含多個子模塊,則建議每一個子模塊提供一個對外的.h,文件名爲子模塊名。降低接口使用者的編寫難度

3、頭文件不要使用非習慣用法的擴展名,如.inc;使用.inc還導致source insight、Visual stduio等IDE工具無法識別其爲頭文件,導致很多功能不可用,如“跳轉到變量定義處”。雖然可以通過配置,強迫IDE識別.inc爲頭文件,但是有些軟件無法配置,如Visual Assist只能識別.h而無法通過配置識別.inc。

4、同一產品統一包含頭文件排列方式;常見的包含頭文件排列方式:功能塊排序、文件名升序、穩定度排序;建議將不穩定的頭文件放在前面,某一.h文件較爲頻繁更改,如果有錯誤,則不會編譯其下面的頭文件,可以減少編譯時間;

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