我将其包括在内,因为它是 MySQL C 库所要求的。
VS2010 中的自动完成功能也显示了 - 知道这是什么吗?
它们是否可以互换,并且其中一个比另一个有什么优势?
谢谢!
原文由 James 发布,翻译遵循 CC BY-SA 4.0 许可协议
我将其包括在内,因为它是 MySQL C 库所要求的。
VS2010 中的自动完成功能也显示了 - 知道这是什么吗?
它们是否可以互换,并且其中一个比另一个有什么优势?
谢谢!
原文由 James 发布,翻译遵循 CC BY-SA 4.0 许可协议
你应该使用 winsock2.h
除非你想使用 Winsock 1.1。 winsock2.h
适用于 Winsock 2。
您可以在 Wikipedia Winsock 页面上 阅读有关它的更多信息。
原文由 Seth Carnegie 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答499 阅读✓ 已解决
@cost 的回答 链接 到一个讨论,除其他外,该讨论提出了一个从未回答过的问题:
windows.h
默认包括winsock.h
(如果WIN32_LEAN_AND_MEAN
未定义)。不过,问题不仅限于windows.h
。任何时候winsock.h
被包含在winsock2.h
之前,都会出现编译器错误。原因是这两个文件 不能 很好地共存。
winsock2.h
旨在 替换winsock.h
,而不是扩展它。在winsock.h
中定义的所有内容也在winsock2.h
中定义。If
winsock2.h
is included beforewinsock.h
,winsock2.h
defines_WINSOCKAPI_
to prevent the compiler from processing subsequentwinsock.h
includes,一切都很好。But if
winsock.h
is included beforewinsock2.h
,winsock2.h
does not detect that and tries to re-define everything thatwinsock.h
has already defined,导致编译失败。在同一项目中混合使用
winsock.h
的代码与使用winsock2.h
的代码时,您必须非常小心。例如,在编写自己的使用winsock2.h
的套接字代码时,以及使用仍然使用winsock.h
的第三方库时。