namespace someNameSpace {
extern "C" void doSomething()
{
someOperations();
}
}
Chcę uruchomić doSomething()
zarówno w środowisku C++, jak i C.zewnętrzne powiązanie "C" w przestrzeni nazw C++?
Czy someNameSpace
nadal hermetyzuje doSomething()
, jeśli wystawię go na połączenie extern "C"
?
Czy istnieje dobry sposób na dzielenie się funkcjami między C++ i C, unikając zanieczyszczania globalnej przestrzeni nazw po stronie C++?
Edit: Ponieważ kod ten jest stosowany głównie w C++ tryb, natomiast C podnośnik jest przeznaczony do użytku tylko testowym, to chyba lepszy sposób to zrobić.
namespace someNameSpace {
#ifdef COMPILE_FOR_C_LINKAGE
extern "C"
#else
extern "C++"
#endif
{
void doSomething()
{
someOperations();
}
}
}
Próbowałaś go używać w programie C? Jeśli tak, co się stało? –
@RyanJ Tak, próbowałem, kompiluje i łączy dobrze zarówno w C++ i C. Jeszcze go nie uruchomiłem. – user3528438