簡體   English   中英

前向聲明還是#include?

[英]Forward declare or #include first?

今天,一位同事在向前在標頭中聲明類之前詢問了#include標頭是否存在技術原因。 具體來說,我對自己內部#includes的順序或forward declare#includes的優劣無關,但是出於技術原因,一個順序比另一個順序更可取。

示例:假設companions.h donna.h是正確的,因為它要求donna.hclara.h#include ,並且可以向前聲明CSpaceTimeContinuumCTardis #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"以便它們不依賴於外部前向聲明,這僅留下一種實際的可能性,即在這些文件中聲明的CSpaceTimeContinuumCTardis之間可能會發生沖突,並且您使用的是這些類在本地源中。 這樣,按行順序唯一可以做的就是在發生碰撞的情況下進行診斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM