正如MySQL C库所要求的那样,我将其包括在内。
VS2010中的自动补全功能也显示出--你知道这是什么吗?
它们是可互换的吗?它们之间有什么优势吗?
谢谢!
发布于 2012-02-07 07:22:01
@cost的答案links针对一场讨论,其中提出了一个从未得到回答的问题:
是不是有什么原因不能在winsock2.h之前包含windows.h,它会给我带来很多错误,但是一旦我改变了它们的顺序,一切都是正常的……为什么会这样呢?
windows.h在为较新的Windows版本编译时包含winsock2.h,但对于较旧的开发,它包含winsock.h。然而,这个问题并不局限于windows.h。每次在winsock2.h之前包含winsock.h时,都会出现编译器错误。原因是和这两个文件不能很好地共存。winsock2.h旨在取代 winsock.h,而不是扩展它。在winsock.h中定义的所有内容也在winsock2.h中定义。如果在winsock.h之前包含winsock2.h,则winsock2.h将定义_WINSOCKAPI_,以防止编译器处理后续的winsock.h包含,这样就没有问题了。但是,如果在winsock2.h之前包含winsock.h,winsock2.h将不会检测到这一点,并尝试重新定义winsock.h已经定义的所有内容,从而导致编译失败。
在同一项目中混合使用winsock.h的代码和使用winsock2.h的代码时,必须非常小心。例如,在编写自己的使用winsock2.h的套接字代码时,以及使用仍然使用winsock.h的第三方库时。
发布于 2012-02-06 07:05:45
除非你想使用Winsock1.1,否则你应该使用winsock2.h。winsock2.h是针对Winsock2的。
你可以在Wikipedia Winsock page上阅读更多关于它的内容。
发布于 2021-02-09 05:25:23
Winsock2与原始的winsock完全向后兼容,所以你想要使用原始的winsock的唯一原因是当你的目标平台不支持winsock2时(我相信比Windows3.11更新的版本都支持winsock2 )。
https://stackoverflow.com/questions/9153911
复制相似问题