Determinar se compilar no Windows ou em outro sistema
-
24-09-2019 - |
Pergunta
Atualmente estou desenvolvendo uma plataforma cruzada C inscrição. Existe alguma macro do compilador que seja definida apenas durante a compilação no Windows, para que eu possa #ifdef
Alguns #includes específicos do Windows?
Exemplo típico está selecionando entre os cabeçalhos Winsock e Berkeley Sockets:
#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
Então, o que estou procurando é algo assim _JANELAS macro.
Solução
Sua melhor aposta é usar
_WIN32
Isso é garantido para ser definido Ao compilar para uma plataforma Windows de 32 ou 64 bits usando o compilador Visual C ++. Eu esperaria que outros compiladores também o definissem (o compilador Intel C ++ o define, assim como o Mingw GCC).
Outras dicas
Usar _WIN32
.
Referência:
- Macros predefinidas da Microsoft C ++
- Macros predefinidos do GCC
- Como obter macros predefinidos para o OS X (ou apenas verifique se há
__APPLE__
)
_WIN32
Definido para inscrições para Win32 e Win64. Sempre definido.
_WIN64
Definido para inscrições para o Win64.
Fonte : Lista as macros predefinidas da ANSI C e Microsoft C ++ Implementation.