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

У меня есть код cpp, в котором я хочу вызвать функцию c.
Оба компилируются хорошо в файлы .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. Благодарю.

0

Решение

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);
7

Другие решения


По вопросам рекламы [email protected]