Ошибка: ожидаемый неквалифицированный идентификатор на внешнем "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);