2010-02-27 10 views
6

Mam kompilacji pod Linuksem (GCC 4.4.2) i Windows VS C++ Express Edition 2008Używanie makr Win32 lub _MSC_VER wieloplatformowe

Jestem obecnie opracowującym pod Windows XP Pro 32 bit, i dodałem to do mojego kod źródłowy.

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

Jednak kod w instrukcji if jest wyłączony (wyszarzony). Jednak jeśli wykonuję następujące czynności:

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

Kod instrukcji if jest włączony.

Zastanawiam się, czego powinienem używać. Widziałem wielu programistów używających WIN32. Wydaje się jednak, że nie działa dla mnie. Czy zamiast tego powinienem używać _MSC_VER?

Wielkie dzięki za radę,

Odpowiedz

1

Zamiast tego użyj _WIN32. Parser IntelliSense w VS2008 jest kłopotliwy, może to nie rozwiązać twojego problemu. Dostał kompletny przepis w VS2010.

2

To zadziałało dla mnie!

#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

Witam i zapraszam do StackOverflow. Proszę sformatować swoją odpowiedź w czytelny sposób. Podczas edytowania posta możesz zobaczyć pewne wskazówki dotyczące formatowania na pasku bocznym. – Chaithanya

+0

Dzięki za naprawienie tego dla mnie. Na pewno następnym razem sformatuję mój kod poprawnie. –

Powiązane problemy