3

ac 関数を呼び出したい cpp コードがあります。どちらも .o ファイルに適切にコンパイルされますが、コンパイルのために clang++ を実行すると、次のエラーが表示されます。

file.cpp:74:12: error: expected unqualified-id
    extern "C"
           ^

cpp ファイルのコードは次のとおりです。

void parseExtern(QString str)
{
#ifdef __cplusplus
    extern "C"
    {
#endif
        function_in_C(str);
#ifdef __cplusplus
    }
#endif

}

エラーを回避するにはどうすればよいですか? clang ++でcファイルをコンパイルできません。externを使用する必要があります。ありがとう。

4

1 に答える 1

12

リンケージ仕様は、extern "C"関数宣言に付加するものです。呼び出しサイトには入れません。

あなたの場合、ヘッダーファイルに次のものを入れます:

#ifdef __cplusplus
    extern "C"
    {
#endif
        void function_in_C(char const *); /* insert correct prototype */
        /* add other C function prototypes here if needed */
#ifdef __cplusplus
    }
#endif

次に、C++ コードで、他の関数と同じように呼び出します。余分な装飾は必要ありません。

char const * data = ...;
function_in_C(data);
于 2015-05-25T14:26:00.623 に答える