Я просто получил код C, который использует extern "C" для объявления внешних функций следующим образом:
extern "C" void func();
Действительно ли это C? Я получаю сообщение об ошибке в этой строке, но я не уверен, что из-за этого или чего-то еще.
Ответ 1
Нет, он недействителен C. Он должен использоваться только в коде С++ для обозначения функций, определенных в коде C. extern "C" должен быть окружен блоком ifdef __cplusplus/#endif:
// For one function
#ifdef __cplusplus
extern "C"
#endif
void func();
// For more than one function
#ifdef __cplusplus
extern "C"
{
#endif
void func1();
void func2();
#ifdef __cplusplus
}
#endif
Ответ 2
это обозначение С++, чтобы сообщить компилятору/компоновщику использовать стандарты вызова C.
Обычно эта строка завершается в предпроцессорном заявлении.