Я в настоящее время разрабатываю межплатформенное приложение 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 макрос.
Лучше всего использовать
_WIN32
Он гарантированно определен при компиляции для 32-битной или 64-битной платформы Windows с помощью компилятора Visual C++. Я ожидаю, что другие компиляторы для Windows также определят его (компилятор Intel C++ определяет его, как и MinGW gcc).
Используйте _WIN32
.
Ссылка:
__ APPLE __
) _WIN32
Определено для приложений Win32 и Win64. Всегда определен.
_WIN64
Определен для приложений для Win64.
Источник: Список предопределенных макросов реализации ANSI C и Microsoft C ++.