11
votes

Utilisation de Macros Win32 ou _msc_ver Cross-Platform

Je compose de la compilation sous Linux (GCC 4.4.2) et Windows VS C ++ Express Edition 2008

Je compose actuellement sous Windows XP Pro 32 bit et j'ai ajouté ceci à mon code source. P>

#if defined( _MSC_VER )
/* Do windows stuff here */
#endif

c

0 commentaires

3 Réponses :


2
votes

Utilisez _Win32 à la place. L'analyseur Intellisense à VS2008 est gênant, cela pourrait ne pas nécessairement résoudre votre problème. Il a obtenu une réécriture complète dans VS2010.


0 commentaires

15
votes

Il n'y a pas de win32 . Si vous l'avez vu être utilisé ailleurs, c'est faux ou le code définit explicitement cette macro elle-même quelque part.

vous voulez _win32 . Voir https://docs.microsoft.com/en-us/cpp/ Prérocorocesseur / Prefiné-Macros pour une liste de macros prédéfinies dans le compilateur de Microsoft.


0 commentaires

3
votes

Cela a fonctionné pour moi!

#if defined (_WIN32)
#define PLATFORM "Windows"
#elif defined (__linux)
#define PLATFORM "Linux"
#endif
#include <iostream>
using namespace std;

int main()
{
  cout << PLATFORM << "System" << endl;
  return 0;
}


2 commentaires

Bonjour, et bienvenue à Stackoverflow. Veuillez formater votre réponse de manière lisible. Vous pouvez voir certaines directives de formatage sur la barre latérale lorsque vous modifiez votre message.


Merci de la réparer pour moi. Je serai sûr de formater mon code correctement la prochaine fois.