1. 頭文件

1.    #define 保護函數

(1)命名形式:<PROJECT>_<PATH>_<FILE>_H_性能

例如spa

#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
#endif //FOO_BAR_BAZ_H_

(2)做用:防止頭文件被屢次包含。指針


2.    頭文件的依賴關係code

(1)包含一個頭文件,即引入頭文件依賴關係。這個頭文件改變時,代碼都須要從新編譯。遞歸

(2)使用前置聲明來減小自定義頭文件包含其餘頭文件的數量。資源

(3)使用前置聲明的狀況編譯器

a.    聲明數據成員 Foo* 或 Foo&;it

b.    聲明靜態數據成員 Foo;編譯

c.    聲明以 Foo 爲參數、返回值的函數(參數 Foo 或者 const Foo& 有一個隱式單參數構造函數,則要引入類定義);


3.    內聯函數

(1)利:可產生更高效的目標代碼。儘可能內聯類成員訪問、修改函數,其餘簡短,對性能要求關鍵的函數。

(2)弊:過量使用會使性能受損。可能使代碼量增長。

(3)總結

a.    少於10行;

b.    不含循環或開關指令;

c.    虛函數、遞歸函數一般不能被內聯;


4.    內聯頭文件

(1)在頭文件中定義內聯函數,編譯器才能將其代碼複製到調用處。

(2)頭文件通常不含實現代碼,除非爲了改善可讀性或性能。

(3)-inl.h 文件定義複雜的內聯函數,避免頭文件臃腫,使實現和定義分開。

(4)-inl.h 文件另外一用途是定義函數模板,使函數模板定義可讀性更好。


5.    函數參數次序

(1)參數次序:輸入、輸出。

(2)輸入,數值或常引用。

(3)輸出,非 const 指針。


6.    包含的命名和次序

(1)標準包含次序:C庫、C++庫、其餘庫、自定義頭文件。

(2)頭文件按其資源目錄降序排列。

相關文章
相關標籤/搜索