3

我有一个 cpp 代码,我想在其中调用 ac 函数。两者都可以很好地编译为 .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 回答