zoukankan      html  css  js  c++  java
  • VC中编译报错:error C2011: 'fd_set' : 'struct' type redefinition

    这是头文件包含顺序的问题,原因与解决办法见下面代码的注释。
    
    /*
    包含下面这两个头文件时,必须把winsock2.h放在前面
    否则编译报错,N多的重定义错误:例如 error C2011: 'fd_set' : 'struct' type redefinition
    */
    #include <WinSock2.h>
    #include <Windows.h>
    
    int main(int argc, _TCHAR* argv[])
    {
        Sleep(1);
        return 0;
    }
    其实可以不包含Windows.h,因为在winsock2.h中已经包含的windows.h
    
    如果是很多的文件的话,找包含关系太繁琐,可以直接把 winsock2.h 的包含放在cpp最前面。
    
    为什么会这样呢?头文件的包含还要求顺序,在MSDN中却没有解释。
    只能说是微软的头文件写的有问题了。
    
    
  • 相关阅读:
    vue-路由传参
    ES6模板字符串
    es6中Set和Map数据结构
    本周面试题
    var、let和const定义变量的特点
    修改this的指向
    Echarts图表插件
    ES6学习
    swiper插件学习
    每日刷题4
  • 原文地址:https://www.cnblogs.com/zhaojk2010/p/4149668.html
Copyright © 2011-2022 走看看