私はメインファイルvector.c、vector.hを使用してかなり単純なCプログラムに取り組んでいますが、次の問題が発生しています。
- 提供する宣言が両方のcファイルで必要な場合、.hファイルのインクルードはどこに配置しますか?
- 3つのファイルすべてに必要なtypedefをどこに配置しますか?
私が何をしてもgccは文句を言うようです。
誰かがこれらの質問に答えることができますか、または私が読むことができるリソースに私を向けることができますか?
私はメインファイルvector.c、vector.hを使用してかなり単純なCプログラムに取り組んでいますが、次の問題が発生しています。
私が何をしてもgccは文句を言うようです。
誰かがこれらの質問に答えることができますか、または私が読むことができるリソースに私を向けることができますか?
提供する宣言が両方のcファイルで必要な場合、.hファイルのインクルードはどこに配置しますか?
include
ヘッダー定義を必要とする各Cファイル(この場合はmain.c と vector.c )にステートメントを配置します。インクルードガードを使用することは常に良い考えであり、コンパイラがシンボルがすでに定義されているか、複数定義されていることについて不平を言っている場合に必要です。
3つのファイルすべてに必要なtypedefをどこに配置しますか?
場合によります:
typedefs
ベクターAPIに必要な場合、またはベクターAPIに固有の場合は、それらをvector.hに配置します。typedefs
がベクターインターフェイスの一部でない場合は、おそらくcommon.hのような3番目のヘッダーファイルに属している可能性があります。これは、他のすべてのファイルにも含まれている可能性があります。プロジェクト内のファイル。非常に自然に:
typedef
s は宣言であるため、ヘッダー ファイルに入れるのに非常に適しています。ヘッダーを含むヘッダーがある場合、複数の包含に対する保護が必要になることがありますが、あなたの場合は必要ありません。すべての C ファイルは単独でコンパイルされることに注意してください。#include
もちろん、C ファイルでは絶対に使用しないでください。