我包含了MySQL C库所需的内容。
VS2010中的自动完成也显示了 - 任何想法是什么?
它们是否可以互换,是否有任何优势?
谢谢!
答案 0 :(得分:24)
@费用的回答links进行了一次讨论,其中包括提出这个从未回答过的问题:
在为较新的Windows版本进行编译时,我有理由不能在winsock2.h之前包含windows.h, 它给了我很多错误,但一旦我切换他们的订单一切 没问题......为什么会这样?
windows.h
包括winsock2.h
,但对于较早的开发,它包含winsock.h
。但问题不仅限于windows.h
。在winsock.h
之前任何时候winsock2.h
被包含在内,都会出现编译错误。原因是因为两个文件不要共存得非常好。 winsock2.h
旨在替换 winsock.h
,而不是扩展它。 winsock.h
中定义的所有内容也在winsock2.h
中定义。如果在winsock2.h
之前包含winsock.h
,则winsock2.h
定义_WINSOCKAPI_
以阻止编译器处理后续winsock.h
包含,并且一切正常。但是如果在winsock.h
之前包含winsock2.h
,则winsock2.h
不会检测到它并尝试重新定义winsock.h
已定义的所有内容,从而导致编译失败。
在将使用winsock.h
的代码与在同一项目中使用winsock2.h
的代码混合时,您必须非常小心。例如,编写使用winsock2.h
的自己的套接字代码,并使用仍使用winsock.h
的第三方库时。
答案 1 :(得分:7)
除非您想使用Winsock 1.1,否则您应该使用winsock2.h
。 winsock2.h
适用于Winsock 2。
您可以在Wikipedia Winsock page了解更多相关信息。
答案 2 :(得分:0)
Winsock2 与原来的 winsock 完全向后兼容,所以你想要使用原来的 winsock 的唯一原因是当你的目标平台不支持 winsock2(比 Windows 3.11 更新的所有东西都支持 winsock2 I相信)。