Определение, ли, компилируя в Windows или другой системе

Я в настоящее время разрабатываю межплатформенное приложение C. Есть ли любой макрос компилятора, который определяется только во время компиляции в Windows, таким образом, я могу #ifdef некоторый Windows определенный #includes?

Типичный пример выбирает между WinSock, и Беркли снабжает заголовки сокетом:

#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

Таким образом, вещь, которую я ищу, является чем-то как этот _WINDOWS макрос.

5
задан Brian Tompsett - 汤莱恩 23 February 2016 в 17:02
поделиться

3 ответа

Лучше всего использовать

_WIN32

Он гарантированно определен при компиляции для 32-битной или 64-битной платформы Windows с помощью компилятора Visual C++. Я ожидаю, что другие компиляторы для Windows также определят его (компилятор Intel C++ определяет его, как и MinGW gcc).

10
ответ дан 18 December 2019 в 11:55
поделиться
_WIN32  

Определено для приложений Win32 и Win64. Всегда определен.

_WIN64  

Определен для приложений для Win64.

Источник: Список предопределенных макросов реализации ANSI C и Microsoft C ++.

2
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: