c – VS2008编译错误

获得重新定义的重叠(105)尝试使用< winsock2.h>编译我的VS2008 c项目时出现语法错误包括在内.运行 Windows 7 64位.
我用谷歌搜索搜索,答案看起来很均匀,但似乎对我不起作用.

尝试把#include< winsock2.h>在#include< windows.h>之前.还尝试不包括< windows.h> (如果缺少,winsock2会自动包含它).

尝试使用#define WIN32_LEAN_AND_MEAN和/或#define _WINSOCKAPI_优先.

链接器中 – >其他依赖项我引用了ws2_32.lib.
还尝试了#pragma comment(lib,“ws2_32.lib”).

为了以防万一,我重建整个解决方案.

通常的错误(许多人似乎共享):

Error   5   error C2011: 'sockaddr' : 'struct' type redeFinition    c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h  206 RallyAction
Error   6   error C2143: Syntax error : missing '}' before 'constant'   c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h  384 RallyAction
Error   7   error C2143: Syntax error : missing ';' before 'constant'   c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h  384 RallyAction
Error   8   error C2059: Syntax error : 'constant'  c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h  384 RallyAction

……等等等等.

任何建议,将不胜感激.

解决方法

我有一个“WinsockWrapper.h”标题,可以帮助我确保一致性……它的要点是;
#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif

#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

在任何可能在任何需要winsock2.h的文件中引入windows.h的东西之前包括这个

这个,恕我直言意味着把它放在需要winsock2.h的大多数文件的顶部…

确保您的预编译头文件(如果您正在使用它)也首先使用它.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...