Comment identifier plate-forme/compilateur de macros du préprocesseur?

Je suis en train d'écrire une croix-plate-forme de code, qui devrait compiler sur linux, windows, Mac OS. Sur windows, je dois en charge de visual studio et mingw.

Il y a quelques morceaux de plate-forme spécifique de code, je devrait mettre en #ifdef .. #endif de l'environnement. Par exemple, ici, j'ai placé le code spécifique win32:

#ifdef WIN32
#include <windows.h>
#endif

Mais comment puis-je reconnaître linux et mac OS? Quelles sont définit les noms (ou etc.) Je devrais utiliser?

  • Voici OS macro définir la liste.
  • La dupe est beaucoup mieux accepté de répondre.
  • L'proposé en double n'est PAS la même question. Cette question ne demande qu'à propos de l'identification du système d'exploitation, alors que cette question pose aussi des questions sur l'identification du compilateur, qui est une chose très différente.
  • encore accepté la réponse ne fait même pas mention des compilateurs, et ne parle que de Systèmes d'exploitation (et d'une "plate-forme"). Pour ne pas mentionner que c'est une terrible réponse par rapport à ce que la dupe a à offrir.
  • Puis les lier à la question en commentaire. Juste parce qu'il a une meilleure réponse, ne pas faire un doublon. La question est de savoir ce qui détermine si c'est un doublon, pas les réponses. La fermeture de celle-ci ne garantit que nous ne serez jamais obtenir une bonne qualité de réponse pour le compilateur liés à la partie de la question, dont le soi-disant "double" ne peut pas toujours répondre.
  • Je ne peux ré-accepter la meilleure réponse quand il apparaîtra. )
  • double possible de Comment puis-je vérifier l'OS avec une directive de préprocesseur?
  • Vous devriez plutôt utiliser _WIN32 au lieu de WIN32. stackoverflow.com/questions/9025708/...
  • Rien ne pourra te sauver sur sous Solaris de Sun Studio.... Vous définit peut-être l'habitude de voir, comme __SSE2__ ne sont pas présents. Et il n'y a aucun moyen de savoir qui -xarch=X a été spécifié, comme -xarch=sse4_2, -xarch=aes ou -xarch=avx_i.

InformationsquelleAutor Arenim | 2011-01-05