Ошибка: ожидаемый неквалифицированный идентификатор на внешнем "C"

У меня есть код 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

}

Как я могу избежать ошибки? Я не могу скомпилировать файл c с помощью clang ++, мне действительно нужно использовать extern. Благодарю.

1 ответ

Решение

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);
Другие вопросы по тегам