1

列挙型を前方宣言する C ヘッダーがあります。どうやら、これは C++ では不可能なので、フォームのすべてのプリプロセッサ ラップは

extern "C" {
  #include <header.h>
}

助けにはなりません。C ヘッダーを編集せずにこれらのヘッダーを C++ 翻訳単位に含める方法はありますか? 幸いなことに、この場合、前方宣言を回避するために C ヘッダーを変更することは比較的簡単ですが、これはかなり重大な問題であると私は思います。一般に、C++ から C ライブラリにリンクすることはいつでも可能だと考えていましたが、ヘッダーをインクルードできないため、場合によってはそれが非現実的になっているようです。

やや関連する質問: 71416 681243

4

1 に答える 1

0

前方宣言された列挙型は C++0x で使用できます。コンパイラがまだそれをサポートしていない場合は、列挙型を名前空間にラップすることで、ODR の違反を回避できます。

PS 良い説明: http://www.devx.com/cplus/Article/42478/1954?pf=true

于 2010-12-31T15:45:24.207 に答える