現在、A と B の 2 つの VC プロジェクトがあります。プロジェクト B で作業していenum
ます。プロジェクト A のヘッダー ファイルで定義されたタイプを使用する必要があります。このヘッダー ファイルを含めることはできません。
extern
列挙型の可視性をプロジェクト B に拡張するために使用できますか?
もしそうなら、どうすればいいですか?enum
そうでない場合、プロジェクト B でこの型を使用する他の方法はありますか?
extern を使用して列挙型の可視性をプロジェクト B に拡張できますか?
いいえ。列挙型の定義は、それを使用する翻訳単位で必要です。
プロジェクト B でこの列挙型を使用する他の方法はありますか?
いいえ。唯一のオプションは、A のヘッダーを B で使用できるようにするか、定義をコピーしてコピーの一貫性を保つ方法を見つけることです。
extern は、特定のシンボルの定義が他のファイルであることをコンパイラに伝えるだけで、現在のファイルは宣言のみを持っています。これは、ソース コードでグローバル変数を可視化するために使用するメカニズムです。したがって、あなたの場合、 extern はしません。
あなたができることは、プロジェクトとそこの両方に共通のヘッダーファイルを持つことです:
typedef enum{
...
//enum members
...
};
このようにして、両方のプロジェクトで同じ列挙型を使用できます。