4

現在、A と B の 2 つの VC プロジェクトがあります。プロジェクト B で作業していenumます。プロジェクト A のヘッダー ファイルで定義されたタイプを使用する必要があります。このヘッダー ファイルを含めることはできません。

extern列挙型の可視性をプロジェクト B に拡張するために使用できますか?

もしそうなら、どうすればいいですか?enumそうでない場合、プロジェクト B でこの型を使用する他の方法はありますか?

4

2 に答える 2

7

extern を使用して列挙型の可視性をプロジェクト B に拡張できますか?

いいえ。列挙型の定義は、それを使用する翻訳単位で必要です。

プロジェクト B でこの列挙型を使用する他の方法はありますか?

いいえ。唯一のオプションは、A のヘッダーを B で使用できるようにするか、定義をコピーしてコピーの一貫性を保つ方法を見つけることです。

于 2013-11-13T13:20:40.253 に答える
1

extern は、特定のシンボルの定義が他のファイルであることをコンパイラに伝えるだけで、現在のファイルは宣言のみを持っています。これは、ソース コードでグローバル変数を可視化するために使用するメカニズムです。したがって、あなたの場合、 extern はしません。

あなたができることは、プロジェクトとそこの両方に共通のヘッダーファイルを持つことです:

typedef enum{
...
//enum members
...
};

このようにして、両方のプロジェクトで同じ列挙型を使用できます。

于 2013-11-13T14:01:57.610 に答える