namespace someNameSpace {
extern "C" void doSomething()
{
someOperations();
}
}
Voglio eseguire doSomething()
in ambiente C++ e C.Collegamento "C" extern all'interno dello spazio dei nomi C++?
È someNameSpace
che incapsula ancora doSomething()
se lo espongo al collegamento extern "C"
?
C'è un buon modo per condividere le funzioni tra C++ e C evitando lo spazio dei nomi globale inquinante sul lato C++?
Edit: Perché questo codice viene utilizzato principalmente in C++ modalità, mentre il collegamento C è per uso di prova solo, credo che questo sia un modo migliore per farlo.
namespace someNameSpace {
#ifdef COMPILE_FOR_C_LINKAGE
extern "C"
#else
extern "C++"
#endif
{
void doSomething()
{
someOperations();
}
}
}
Hai provato a usarlo in un programma C? Se è così, cosa è successo? –
@RyanJ Sì, ho provato, si compila e si collega bene sia in C++ che in C. Non l'ho ancora eseguito. – user3528438