1

このことを使用して、C++ プロジェクト内に C メソッドを含めることができることを知っていますextern "C"。しかし、ここで、私が作成したライブラリと、開発の詳細とコンパイル仕様を開発している他の人/会社が作成したライブラリの両方からのかなり多くの C メソッドを使用する C++ プロジェクトを作成することを考えているとしましょう。単に気づいていない。

C ライブラリのこのメソッドのいくつかは、コンパイルと構成の詳細が不明なため、私の C++ プロジェクトに含めることができなかった可能性はありますextern "C"か? それとも、すべての C メソッドextern "C"は、使用される限り、C++ コードと 100% 互換性がある必要がありますか?

4

3 に答える 3

5

C によってエクスポートされた関数の一部が、C++ キーワードと衝突する名前を使用している可能性があります。を使用してそれらを宣言することはできませんextern "C"

アセンブラによってエクスポートされた関数は、C キーワードと競合する名前を使用することさえあります。

static と宣言された関数は、ライブラリが取得する方法を提供している限り、関数ポインタを介して呼び出すことができます。

ヘッダーは、同じ理由で C++ モードでは解析できない場合があります (restrictキーワードなど)。

命名の問題以外に、C++ は C 呼び出し規約を完全にサポートしています。それextern "C"がすべてです。

于 2014-09-10T13:32:22.697 に答える