0

我对这个跨平台的东西真的很陌生,至少可以说我有点讨厌与 windows 打交道,但我必须为 uni :(

无论如何,我几乎拥有我想要在 linux 和 windows 上工作的所有东西,但我正在尝试将它们结合起来并拥有一个程序。我已经对此进行了一些搜索,但找不到解决方案。这是我所拥有的-

#ifdef WIN32

#include <windows.h>
#include <process.h>
#pragma comment(lib, "wsock32.lib")

#else

#include <sys/socket.h>
#include <netdb.h>
void killMe();

#endif

Visual Studio 尝试“包含”sys/socket,而这在 Windows 中不存在。我希望有一个简单的解决方案来实现这一目标。
如果我只是将它注释掉并且我知道 WIN32 被定义为我使用 printf() 来测试它,那么它工作得很好。

4

1 回答 1

1

宏是_WIN32(前导下划线),而不是WIN32

#ifdef _WIN32

#include <windows.h>
#include <process.h>
#pragma comment(lib, "wsock32.lib")

#else

#include <sys/socket.h>
#include <netdb.h>
void killMe();

#endif

请参阅预定义宏


WIN32#define头文件中的 d WinDef.h(在第 31 行)。这将解释为什么WIN32在您的.c源代码中可用,而不是在.h标头windows.h包含的文件中WinDef.h,并且(可能)您的.c文件包含您的头文件。

于 2012-09-19T09:33:01.360 回答