http://www.cnblogs.com/ark-zhang/archive/2013/06/19/3144383.html

 

首先说明这个问题由于重复定义引起的编译错误。

先说明解决方法,然后再说是什么原因导致了这个问题。

解决方法:

下列任何一种方法都可以。

1. 在所有包含windows.h的代码之前加上

#define  WIN32_LEAN_AND_MEAN

2. 或者直接在工程的properties( vc6 以上)/Setting(vc6) -> c/c++ -> preprocessor 中添加WIN32_LEAN_AND_MEAN

问题根由:

因为windows.h中包含了<winsock.h>,这个是早期版本(windows socket 1.1)的windows socket 的头文件,而当你自己的文件中因使用最新版本windows socket的函数,需要包含 winsock2.h。而这两个版本都定义fd_set一系列的结构和函数,所以就出现这样的问题。

好,我们看下windows.h的定义,其实看一下这个定义就知道导致问题的原因和解决问题的方法:

#ifndef WIN32_LEAN_AND_MEAN
#include <cderr.h>
#include <dde.h>
#include <ddeml.h>
#include <dlgs.h>
#ifndef _MAC
#include <lzexpand.h>
#include <mmsystem.h>
#include <nb30.h>
#include <rpc.h>
#endif
#include <shellapi.h>
#ifndef _MAC
#include <winperf.h>
#include <winsock.h>
#endif
#ifndef NOCRYPT
#include <wincrypt.h>
#include <winefs.h>
#include <winscard.h>
#endif

解决error C2011: 'fd_set' : 'struct' type redefinition的方法的更多相关文章

  1. 解决ERROR C2011: 'FD_SET' : 'STRUCT' TYPE REDEFINITION问题

    在socket编程的过程中头文件中 #include <windows.h> #include "stdafx.h" #include "WinSock2.h ...

  2. VC中编译报错:error C2011: 'fd_set' : 'struct' type redefinition

    这是头文件包含顺序的问题,原因与解决办法见下面代码的注释. /* 包含下面这两个头文件时,必须把winsock2.h放在前面 否则编译报错,N多的重定义错误:例如 error C2011: 'fd_s ...

  3. ADO编程:error C2011: 'LockTypeEnum' : 'enum' type redefinition

     C++ Code  123   // Import the ADO type library #import "C:\\Program Files\\Common Files\\syste ...

  4. error C2011: “timespec”:“struct”类型重定义

    error C2011: “timespec”:“struct”类型重定义 C++ pthread pthread.h 中的 timespec 和time.h 中的 结构定义重复了 ,同时两个头文件中 ...

  5. error C2011: “Picture”:“struct”类型重定义

    今天引用外来库时出现问题,也许是版本问题. 错误如下: .....\oursun\cincludes\quickdraw.h(309): error C2011: “Picture”:“struct” ...

  6. configure: error: cannot guess build type; you must specify one解决方法

    原文地址:https://blog.csdn.net/hebbely/article/details/53993141 1.configure: error: cannot guess build t ...

  7. 多.h项目出现的问题:使用了预编译头依然出现error LNK2005:***obj已在***obj中定义与c++ error C2011: “xxx”:“class”类型重定义解决办法

    使用了预编译头依然出现error LNK2005:***obj已在***obj中定义 造成该问题的可能性比较多,本人将在今后遇到时添加进来,今天先放出本人遇到的一种情况. 多重包含含有变量定义的.h文 ...

  8. 【Unity Shader】syntax error: unexpected token 'struct' at line x 错误解决办法

    以下代码处出现了syntax error: unexpected token 'struct' at line 33的错误 struct a2v { float4 vertex_position : ...

  9. 编译Cython代码时遇到的问题: fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

    使用python setup.py build_ext --inplace命令编译cython代码, 出现以下错误: Compiling cython_example.pyx because it c ...

随机推荐

  1. do break的妙用

    #include <stdio.h> #include <malloc.h> int func(int n) { //资源的统一申请 ; ; int* p = (int*)ma ...

  2. ZOJ 3601 Unrequited Love 浙江省第九届省赛

    Unrequited Love Time Limit: 16 Seconds      Memory Limit: 131072 KB There are n single boys and m si ...

  3. sql2008连接数据库问题

    配置系统未能初始化 (System.Configuration) ------------------------------ 无法识别的配置节 runtime. (C:\Program Files ...

  4. Jmeter+jenkins接口性能测试平台实践整理(二)

    本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encod ...

  5. 20145305 《Java程序设计》第4周学习总结

    教材学习内容总结 1.子类只能继承一个父类 2.检查多态语法逻辑是否正确,方式是从=号右边往左读:右边是不是一种左边(右边类型是不是左边类型的一种子类) 3.可以使用abstract标示该方法为抽象方 ...

  6. [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠

    import flash.geom.Rectangle; import flash.display.MovieClip; import flash.display.Sprite; var arr:Ar ...

  7. java学习___File类的创建

    一.使用File创建文件 File file = new File("."+File.separator+"data.dat"); //如果不存在则创建 fil ...

  8. windows 下使用 zip安装包安装MySQL 5.7

    以下内容参考官方文档:http://dev.mysql.com/doc/refman/5.7/en/windows-start-command-line.html 解压缩zip到D:\mysql-5. ...

  9. EL表达式结合页面JSTL使用 迭代显示表格

    1.迭代显示表格 <%@ page isELIgnored="false"%><%@ taglib uri="/WEB-INF/struts-bean. ...

  10. C# 泛型List用法

    C# List Examples by Sam Allen - Updated September 6, 2009 Problem. You have questions about the List ...