Есть ли extern "C"
сделать что-то еще, кроме указания идентификатора не должны быть искалечены?
Доступны ли функции C ++ в функциях, которые были объявлены как extern "C"
?
Это влияет только на искажение имени, так что внешняя видимость ясна для других приложений.
extern "C"
делает не значит компилировать как C-код. Это значит только чтобы функция была скомпилирована так, чтобы ее можно было вызывать из кода C; то, что на самом деле влияет, зависит от реализации. Все, что вы можете сделать в C ++, прекрасно в такой функции, включая создание исключений.
Вы не должны выбрасывать исключения из них, но в противном случае вы можете реализовать тело extern "C"
Функция с таким количеством функций C ++, как вам нравится.
Это прекрасно
MyObject myobj;
extern "C" {
int myfunc(char *c)
{ // c++ features used here
std::string s = myobj.method(....
}
}