2011-12-22 11 views
3

私は3つの整数i、j、kを保持するVECTOR構造体を持っています。私は複数のヘッダファイルでこの構造体を利用する必要があります。すべての#defines、structs、すべての定数を "Constants.h"というラベルの付いた別個のヘッダファイルに移動するのは悪い習慣と考えられますか?または私が現在使用している各ヘッダファイルに同じ構造体を定義する必要がありますか?構造体/定数を別々のヘッダに保持する

+1

これは、のためのヘッダーファイルです。ヘッダーファイル内の構造体を宣言し、このヘッダーを他のファイルにインクルードします。 –

答えて

6

彼らが異なるコンパイル単位で使用できるように、ヘッダ・ファイルに定義を移動するために非常に良い練習です。これにより、すべてのコンパイルユニットが常にクラスと定数の同じ定義を使用するようになります(例については、より詳細な説明についてはhereを参照してください)。

しかし、悪い習慣~はすべて1つのヘッダーファイルに入れます。これにより、このヘッダファイルを使用するすべてのコンパイル単位が、完全に無関係の変更であっても再コンパイルされます。無関係なものは別のヘッダーになければなりません。便宜上、すべてを含むヘッダーを1つ提供することが有用な場合もありますが、このような機能は、プロトタイプ作成にのみ使用してください。また、コンパイル時が非常に長くなる可能性があります。 This answerには、ヘッダーを整理する方法のアイデアが記載されています。あなたがC++の定数のためのマクロを回避しようとする必要があること

注 - static const Tを好む、例えば:

static const int foo = 42; 

マクロがタイプセーフされていないし、道のために微妙なバグを導入することができますが展開されています。 This questionは、マクロが実際に有用な場合をいくつか挙げています。

+0

単語、私ができるときには病気 – user680725

0

これはまったく悪いことではありません。コードを再利用することは、一般的には良い習慣です。

関連する問題