2010-04-05 13 views
5

Attualmente sto sviluppando un'applicazione multipiattaforma C. Esiste una macro del compilatore che è definita solo durante la compilazione su Windows, quindi posso aggiungere #ifdef ad alcuni #inclusi di Windows?Determinare se compilare su Windows o altro sistema

Esempio tipico è la selezione tra il WinSock e prese Berkeley intestazioni:

#ifdef _WINDOWS 
    #include <winsock.h>  
#else 
    #include <sys/socket.h> 
    #include <netinet/in.h> 
    #include <sys/un.h> 
    #include <arpa/inet.h> 
    #include <netdb.h> 
#endif 

Quindi la cosa che sto cercando è qualcosa di simile _WINDOWS macro.

risposta

10

La cosa migliore è quella di utilizzare

_WIN32 

È guaranteed to be defined quando si compila per una piattaforma Windows a 32-bit o 64-bit utilizzando Visual C++. Mi aspetto che anche altri compilatori per Windows lo definiscano (il compilatore Intel C++ lo definisce, così come il gcc MinGW).

+0

E che in caso di Windows a 64 bit? Presumo _WIN32 è definito solo su sistemi a 32 bit, giusto? – NumberFour

+2

Il 32 è davvero lì per separarlo dalle antiche versioni a 16 bit di Windows. Rimozione di quella definizione in Win64 avrebbe rotto troppe cose, quindi era meno seccante lasciarlo. –

Problemi correlati