Vorrei scrivere una funzione multipiattaforma in C++ che contenga chiamate di sistema. Quali flag di compilazione condizionale posso controllare per determinare per quale sistema operativo viene compilato il codice? Sono interessato principalmente a Windows e Linux, utilizzando Visual Studio e GCC.Compilazione condizionale in C++ basata sul sistema operativo
penso che dovrebbe essere simile a questa:
void SomeClass::SomeFunction()
{
// Other code
#ifdef LINUX
LinuxSystemCall();
#endif
#ifdef WINDOWS
WindowsSystemCall();
#endif
// Other code
}
C'è un Gotcha quando si tratta di compilazione condizionale Win32/Win64 - durante la compilazione per Win64 troverete che _WIN32 è definita in modo di prova contro di _WIN64 prima prova (!) contro _WIN32 –