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

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

}

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

0
25 мая '15 в 14:14
источник поделиться
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);
+7
25 мая '15 в 14:26
источник

Посмотрите другие вопросы по меткам или Задайте вопрос