您的位置:首页 > 其它

winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)

2017-05-27 00:02 295 查看
对于较新的Windows版本,windows.h包含winsock2.h;对于较老的Windows版本,windows.h包含winsock.h。所以问题的本质并不是在与限制windows.h,而是当winsock.h(或包含winsock.h的windows.h)在winsock2.h之前被包含,编译器就会报错。因为winsock2.h设计来是为了取代winsock.h的,在winsock.h中定义的内容在winsock2.h中同样定义。

如果winsock2.h在winsock.h之前被包含,winsock2.h中定义了_WINSOCKAPI_来避免重复编译winsock.h,但如果头文件顺序反过来,winsock.h不会阻止对winsock2.h的重复编译,编译器就会出现重定义的错误。

参见:https://stackoverflow.com/a/9168850
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐