0

通常、ヘッダー ファイルに依存関係を常に含めて、そのヘッダーをソース ファイルに追加するときに、コンパイルするために他の必要なヘッダーを探し回る必要がないようにします。

ただし、他のいくつかのコーディング標準を検討した結果、ヘッダー ファイルに #include ステートメントを含めないという要件により、これはしばしば禁止されているようです。

これについての議論を実際に見つけることはできません.では、そのような慣行を禁止する理由は何ですか?それとも純粋に好みの問題なのでしょうか?

--

たとえば、typedef.h には U8 の typedef が含まれています。my_header.h は void display_message(U8 arg); を宣言します。

typedef.h への参照は、my_source_file.c または my_header.h に入れる必要がありますか??

4

2 に答える 2

5

ヘッダーに前提条件を含めることを許可しない正当な理由はありません。

#includeソース ファイルからを削除することを検討してください。たとえば、 を使用しないようにコードが変更されたfoo.hため、#includefor が削除されたとします。しかし、ソース ファイルには多数の#includeステートメントが含まれています。不要になったので、他にどれを削除する必要がありますか? うまくいけば、foo.hその前提条件を文書化して、削除の候補を特定できるようにします。ただし、それらの#includeステートメントを削除すると、別のヘッダー ファイルで必要な前提条件が削除される可能性があります。したがって、すべてのヘッダー ファイルの前提条件を確認する必要があります。

対照的に、ヘッダーに前提条件が含まれている場合は、単純に削除#include <foo.h>して完了できます。

于 2013-08-09T11:02:46.350 に答える
-1

ソースファイルに入れる必要があります。ヘッダーは、ソース コード ファイル (通常は標準) 内の関数と変数のみを宣言する必要があります。

于 2013-08-07T16:48:56.490 に答える