2010-02-27 8 views
6

sto la compilazione sotto Linux (GCC 4.4.2) ed Edizione di Windows VS C++ Express 2008Utilizzo di macro Win32 o _MSC_VER cross-platform

sto attualmente compilando con Windows XP Pro a 32 bit, e hanno aggiunto questo al mio codice sorgente.

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

Tuttavia, il codice nell'istruzione if è disabilitato (visualizzato in grigio). Tuttavia se faccio quanto segue:

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

Il codice di istruzione if è abilitato.

Mi chiedo solo, cosa dovrei usare. Ho visto molti programmatori utilizzare WIN32. Tuttavia, non sembra funzionare per me. Dovrei usare _MSC_VER invece?

Molte grazie per qualsiasi consiglio,

risposta

1

Utilizzare invece _WIN32. Il parser IntelliSense in VS2008 è problematico, questo potrebbe non risolvere necessariamente il tuo problema. Ha ottenuto una completa riscrittura in VS2010.

2

Questo ha funzionato per me!

#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; 
} 
+0

Ciao e benvenuto su StackOverflow. Si prega di formattare la risposta in modo leggibile. Puoi vedere alcune linee guida di formattazione sulla barra laterale quando stai modificando il tuo post. – Chaithanya

+0

Grazie per avermelo aggiustato. Sarò sicuro di formattare il mio codice correttamente la prossima volta. –