namespace someNameSpace {
extern "C" void doSomething()
{
someOperations();
}
}
Ich möchte doSomething()
in C++ und C-Umgebung ausführen.extern "C" Verknüpfung innerhalb C++ - Namespace?
Ist someNameSpace
immer noch verkapseln doSomething()
, wenn ich es extern "C"
Verknüpfung ausgesetzt?
Gibt es eine gute Möglichkeit, Funktionen zwischen C++ und C zu teilen, während die Verschmutzung von globalen Namespaces auf C++ - Seite vermieden wird?
Bearbeiten: Da dieser Code hauptsächlich im C++ - Modus verwendet wird, während die C-Verknüpfung nur für den Test verwendet wird, denke ich, dass dies ein besserer Weg ist.
namespace someNameSpace {
#ifdef COMPILE_FOR_C_LINKAGE
extern "C"
#else
extern "C++"
#endif
{
void doSomething()
{
someOperations();
}
}
}
Haben Sie versucht, es in einem C-Programm zu benutzen? Wenn ja, was ist passiert? –
@RyanJ Ja, ich habe es versucht, es kompiliert und verbindet sich gut in C++ und C. Ich habe es noch nicht ausgeführt. – user3528438