0

私はopenGLの学習を開始し、プロジェクトを複数のソースファイルに分割することも初めて始めました. そのため、私はまだ少し混乱しており、特にopenGLはグローバル変数を広範囲に使用する必要があるため、変数が散らばっていると感じることがあります。現時点では、約15個のファイルを取得しています。

私の主な問題は、たとえば、一部の変数が一部のモジュールで共有され、他の一部の変数がそれらのいくつかと他のモジュールでのみ共有されることです。これらすべての変数を common.h ファイルに入れると、すべての変数がすべてのモジュールで使用されるわけではないため、(パフォーマンスに関して) 何か問題が発生しますか?

上記の方法を使用すると、他のヘッダーファイルで定義されたタイプを使用する場合、それらも含める必要があるという問題もあります。「#if (定義済み」マクロを使用することもできますが、それは最も適切な方法ではないようです。

4

1 に答える 1

0

未使用の変数の宣言を含めてもextern、パフォーマンスの問題は発生しません(実行時には間違いなく発生しませんが、コンパイル時に認識できないほど小さなオーバーヘッドが発生します)。

ただし、コードの保守性が低下します。ベストプラクティスは、グローバルスコープの変数と関数を用途や目的に基づいてヘッダーに整理することです。概念的に関連しているものは同じヘッダーに入れられ、関連していないものは異なるヘッダーに入れられます。これにより、不要な大量のジャンクを取り込むことなく、必要な機能を簡単に組み込むことができます。

I wouldn't consider it a problem that you need to include headers in order to pull in datatype definitions. That's just part of how the C language works. You can make it easier for yourself by ensuring that all of your headers are self-sufficient. That is, if a header uses a particular datatype, that header should include the header where that type is defined. That way, your .c files don't have to worry about analyzing the header and figuring out what other headers need to be included. Headers that aren't self-sufficient can also lead to problems where code builds differently (or not at all) depending on the order in which the headers were included.

于 2012-04-09T23:34:53.907 に答える