您好,登錄后才能下訂單哦!
1、避免頭文件重復包含
// test.h 此段宏的意思是如果定義了宏變量TEST_H_則不再定義它 #ifndef TEST_H_ #define TEST_H_ //頭文件內容 #endif
或者
// test.h 告訴預編譯器只包含一次 #pragma once
2、避免重復定義
不要將函數定義放置在頭文件里面,正確的做法是頭文件放置函數聲明,源文件放置函數定義。因為源文件是分別編譯的,假如頭文件放置了函數定義,包含該頭文件的每一個源文件都會定義相應的函數,從而導致重復定義。但是幾種情況可以例外:內聯函數的定義、類的定義、const和static變量,以及模板類/函數要求頭文件必須包含定義才可以模板化。
3、避免頭文件互相包含和循環包含
頭文件互相包含會導致遞歸包含,頭文件互相依賴的邏輯本身就是錯誤的而且無法實現,頭文件循環包含同理(比如a.h包含b.h,b.h包含c.h,c.h包含a.h)。正確的做法是將頭文件的依賴降到最小,盡量在源文件中包含頭文件,頭文件中盡量用前置聲明(盡量使用指針和引用,相關定義放到源文件中 等)。前置聲明的類是不完全類型,不完全類型只能以有限方式使用。不能定義該類型的對象。不完全類型只能用于定義指向該類型的指針及引用,或者用于聲明(而不是定義)使用該類型作為形參類型或返回類型的函數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。