c++編譯是一件非常費時的事情,為了盡量的減少編譯時間,必須更好的包含標頭檔案。
下面有幾條很重要的教條,可以參考。
(1) 在標頭檔案中能用類前置宣告代替標頭檔案包含的就用前置宣告。因為使用類前置宣告,當引用的類發生改變時,當前檔案不需要重新編譯。
(a)必須要包含標頭檔案的情況
(*) a繼承c,a類的標頭檔案中必須要包含c的標頭檔案;
(*)a中包含c類的成員變數,a類的標頭檔案中必須包含c的標頭檔案;
(*)a中的inline函式中引用到了c類的成員,a類的標頭檔案必須包含c的標頭檔案;
(b)可以用類的前置宣告代替標頭檔案的情況
(*)a中包含c類的指標成員或引用成員;
(*)a中宣告的函式的引數或返回值是c的變數(c型別,c指標型別,c引用型別);
(2)對於類需要的標頭檔案,盡量在原始檔中包含,而在標頭檔案中使用前置宣告。在原始檔中,只引用需要的標頭檔案,不需要的標頭檔案不引用。
(3)在原始檔中包含標頭檔案的順序遵循如下原則:原始檔對應的標頭檔案(類宣告)、c
標準庫、
c++標準庫、其它庫的標頭檔案、你自己工程的標頭檔案。
(4)vs採用了一種預編譯標頭檔案機制,對於變動不大的宣告,應該放到預編譯標頭檔案中。
為了盡量少的在標頭檔案中包含其他標頭檔案,乙個類中應該盡量定義其他類的指標或引用資料成員,但是引用資料程式必須在建構函式中賦值,所以最終應該盡量在類中宣告其他類的指標資料成員。
使用指標之前是否需要進行空值判斷:
在函式中,對應指標引數,如果不希望引數為空時,需要使用arrest來檢查引數是否為空。此語句只在debug版本有效,在正式發布後無效,不影響效率。
在呼叫帶有指標引數的函式時,最好在呼叫之前檢查一下指標是否為空。即遵循誰呼叫,誰檢查的原則。
C 標頭檔案包含順序
使用標準的標頭檔案包含順序可增強可讀性,避免隱藏依賴。h c 系統檔案 c 系統檔案 其他庫的 h 檔案 本專案內 h 檔案 h 本專案內 h 檔案 其他庫的 h 檔案 c 系統檔案 c 系統檔案 為了減少隱藏依賴,同時標頭檔案和其實現檔案匹配,應該先包含其首選項 即其對應的標頭檔案 google風...
C 標頭檔案的包含順序
一 google c 程式設計風格指南 裡的觀點 dir2 foo2.h preferred location see details below c system files.c system files.other libraries h files.your project s h files...
c 標頭檔案相互包含問題
c 中標頭檔案互相包含經常會出現編譯錯誤.示例 如下 h ifndef a h define a h include b.h includeusing namespace std class a endif a h a.cpp include a.h a a a a int a getvala vo...