Il n'y a pas de macro standard définie selon la norme C. Certains compilateurs C en définiront un sur certaines plates-formes (par exemple, le GCC corrigé d'Apple définit une macro pour indiquer qu'il compile sur un système Apple et pour la plate-forme Darwin). Votre plate-forme et / ou votre compilateur C peuvent également définir quelque chose, mais il n'y a pas de moyen général.
Comme l'a dit hayalci, il est préférable que ces macros soient définies dans votre processus de construction. Il est facile de définir une macro avec la plupart des compilateurs sans modifier le code. Vous pouvez simplement passer -D MACRO
à GCC, c'est-à-dire
gcc -D Windows
gcc -D UNIX
Et dans votre code:
#if defined(Windows)
// do some cool Windows stuff
#elif defined(UNIX)
// do some cool Unix stuff
#else
# error Unsupported operating system
#endif