2010-12-31 7 views
1

前方宣言Cのヘッダーがあります。どうやら、これは、C++では不可能であるので、C++に含まれているCヘッダーの前方宣言列挙体

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

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

やや関連質問: 71416 681243

+0

ここで動作するはずです。http://msdn.microsoft.com/en-us/library/0603949d(v=vs.80).aspx – zsalzbank

答えて

0

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

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