2011-12-22 52 views
3

我有一個VECTOR結構,它包含3個整數i,j和k。我需要在多個頭文件中使用這個結構。將所有#define和structs,所有常量移動到單獨的標題爲「Constants.h」的頭文件中,還是應該在每個我當前使用它的頭文件中定義相同的結構?將結構/常量保存在單獨的頭文件中

+1

這是一個頭文件。在頭文件中聲明該結構並將該頭包含在其他文件中。 – 2011-12-22 08:15:52

回答

6

這是非常好的做法移動定義爲標題,文件,使他們能夠在不同的編譯單元使用。這可確保所有編譯單元始終使用類和常量的相同定義(有關示例,請參閱here以獲得更詳細的解釋)。

然而,它是,但是,不好的做法把它們全部放在一個頭文件。這會使所有使用此頭文件的編譯單元重新編譯,即使是完全不相關的更改。你應該把某些東西歸在一起 - 不相關的東西應該放在不同的標題中。爲方便起見,提供一個包含所有標題的頭文件有時很有用,但這種特徵只能用於快速原型製作或在仔細考慮其含義之後使用 - 編譯時間可能會很快變長。 This answer列出了關於如何組織標題的一些想法。

請注意,您應該儘量避免常量宏在C++ - 喜歡static const T,例如:

static const int foo = 42; 

宏不是類型安全,並可能引入微妙的錯誤,由於道路被擴展。 This question列舉了一些宏實際有用的情況。

+0

一句話,生病時我可以接受 – user680725 2011-12-22 08:22:54

0

這根本不是一個壞習慣。重用代碼通常是一種很好的做法。

相關問題