Originariamente inviato da web@web
Scusa ma su questo link parla dell'uso delle variabili per indirizzare il codice verso le istruzioni dedicate al SO.
Quello che mi chiedo è se sia possibile da codice determinare il SO o se devo iniziare con un DEFINE linux se compilo in linux, DEFINE win32 se compilo in windows ecc..
tu non devi definire, controlli solo se è già definito:
codice:
#include <iostream.h>
#ifdef _WIN32
char* a = "WINDOWS\0";
#elif linux
char* a = "LINUX\0";
#else
#error OS non supportato
#endif
int main() {
cout << a << endl;
return 0;
}
Adesso ho provato su windows e infatti viene scritto WINDOWS, nel caso inverto:
codice:
#ifdef linux
char* a = "WINDOWS\0";
#elif _WIN32
char* a = "LINUX\0";
#else
#error OS non supportato
#endif
Viene scritto linux.
Se uso definizioni di OS che non ho:
codice:
#include <iostream.h>
#ifdef _SUNOS
char* a = "SunOS\0";
#elif _MAC//sarà questo che indica mac... bhò :-)
char* a = "Mac\0";
#else
#error OS non supportato
#endif
int main() {
cout << a << endl;
return 0;
}
A compile time viene lanciato un errore:
"OS non supportato"
Quindi _WIN32 viene riconosciuto, magari dopo provo a vedere se va in linux.
Intendevi questo?