[英]Forward declare or #include first?
今天,一位同事在向前在標頭中聲明類之前詢問了#include標頭是否存在技術原因。 具體來說,我對自己內部#includes
的順序或forward declare
與#includes
的優劣無關,但是出於技術原因,一個順序比另一個順序更可取。
示例:假設companions.h
donna.h
是正確的,因為它要求donna.h
和clara.h
為#include
,並且可以向前聲明CSpaceTimeContinuum
和CTardis
。 #include然后轉發聲明更好嗎?
// companions.h
#include "donna.h"
#include "clara.h"
class CSpaceTimeContinuum;
class CTardis;
還是向前聲明然后#include?
// companions.h
class CSpaceTimeContinuum;
class CTardis;
#include "donna.h"
#include "clara.h"
如果沒有技術上的差異,而僅僅是一種風格上的變化,那么我也很樂意學習。 謝謝!
始終總是頭,然后轉發聲明。 否則,您可能會冒不必要的依賴關系,例如,每當包含donna.h時,都需要重復轉發聲明(因為您無意中引入了對它的需要)。
應該構造"donna.h"
和"clara.h"
以便它們不依賴於外部前向聲明,這僅留下一種實際的可能性,即在這些文件中聲明的CSpaceTimeContinuum
和CTardis
之間可能會發生沖突,並且您使用的是這些類在本地源中。 這樣,按行順序唯一可以做的就是在發生碰撞的情況下進行診斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.