Détecter si le système d’exploitation Windows en C ++

Comment puis-je détecter si le système d’exploitation est Windows en C ++ / C?

Merci

#ifdef _WIN32 cout << "This is Windows." << endl; #endif 

Cela vous permettra de définir des blocs pour Windows uniquement. Tant que la macro du préprocesseur est définie.

Ceci est une chose temps de compilation, pas une chose d'exécution.

Utilisation

 getenv("windir"); 

Si vous obtenez NULL, ce ne sont pas des fenêtres.

Cela fonctionne car% windir% ne doit être défini que sur les systèmes Windows. Ceci est un hack bon marché et sale bien sûr.

http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/

Vous ne devriez pas avoir à faire cela. Vous devriez comstackr séparément pour chaque plate-forme, vous devriez donc savoir si la plate-forme est Windows pour un binary donné.

Fondamentalement, il est inutile de vérifier le système d’exploitation à l’exécution, la possibilité de le faire est donc un point discutable.

Pour vous aider à vous rappeler à l’avenir comment C ++ fonctionne en matière de compilation sur différentes plates-formes, rappelez-vous la phrase ” écris une fois, comstack n’importe où “.


Ce que je recommande, c’est de définir un indicateur de compilation qui fait que la compilation se comporte différemment selon que vous comstackz ou non des fenêtres.

S’il est en cours d’exécution, vous faites peut-être référence à Wine (sur les systèmes d’exploitation autres que Windows). Sinon, c’est tout simplement impossible. Les fichiers binarys Windows ne peuvent pas être exécutés dans d’autres systèmes d’exploitation (sauf s’ils contiennent du vin).

S’il s’agit de la compilation, duplication possible: existe-t-il des macros pour déterminer si mon code est compilé sous Windows?

(voir réponse acceptée ci-dessus)