Это законно? Я хочу экспортировать функцию C, но внутри эта функция будет использовать класс C ++.
extern "C" BOOL /*BOOL==int*/ Func()
{
return someclass::getinstance()->Func(); // this is just bool tho
}
Это законно? Я хочу экспортировать функцию C, но внутри эта функция будет использовать класс C ++.
extern "C" BOOL /*BOOL==int*/ Func()
{
return someclass::getinstance()->Func(); // this is just bool tho
}
Это совершенно законно. Цель extern «C» - предотвратить искажение имени Func () (украшенное информацией о типе), чтобы модуль C мог ссылаться на него, используя его простое имя. C ++ изменяет имена, чтобы можно было разрешить функции с одинаковыми именами, но с разными списками параметров (перегрузка функций).
extern "C"
для использования схемы C и обеспечения большей совместимости между компиляторами (и даже между разными версиями одного и того же компилятора) при связывании с скомпилированными библиотеками. Остальная часть этой вики-статьи содержит хорошие объяснения.
- person Jason C; 26.10.2014