在 Visual Studio 2010 中编译 C WinSock 代码时出现结构重复错误

发布于 2024-11-17 15:56:45 字数 948 浏览 3 评论 0原文

我一直在尝试在 Visual Studio 2010 中编译 C 源代码。在编译时,我遇到了一些错误,例如:

  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(4277): error C2040: 'CONTEXT' : '_CONTEXT' differs in levels of indirection from 'binding *'
  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winuser.h(5341): error C2365: 'INPUT' : redefinition; previous definition was 'enumerator'
  1>c:\documents and settings\xyz\desktop\abc\clause.h(72) : see declaration of 'INPUT'
  1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\sys/time.h(16): error C2011: 'timeval' : 'struct' type redefinition
  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\WinSock2.h(176) : see declaration of 'timeval'

我搜索了这些错误,但有一些提示表明这是由于头文件顺序的更改所致。但无法得到确切的答案。我可以知道,我怎样才能克服这个问题?

以下是头文件包含的顺序。

 #include <WinSock2.h>  
 #include <Windows.h>
 #include <stdio.h>

提前致谢。

I have been trying to compile C source code in visual studio 2010. While compiling i am getting some errors like:

  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(4277): error C2040: 'CONTEXT' : '_CONTEXT' differs in levels of indirection from 'binding *'
  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winuser.h(5341): error C2365: 'INPUT' : redefinition; previous definition was 'enumerator'
  1>c:\documents and settings\xyz\desktop\abc\clause.h(72) : see declaration of 'INPUT'
  1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\sys/time.h(16): error C2011: 'timeval' : 'struct' type redefinition
  1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\WinSock2.h(176) : see declaration of 'timeval'

I searched for those error and but some hints that it is due to the change in order of the header files. But could not get the exact answer. May I know , How can I overcome this problem?

Following is the order of header file inclusions.

 #include <WinSock2.h>  
 #include <Windows.h>
 #include <stdio.h>

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏至、离别 2024-11-24 15:56:45

请参阅此处 - 如果您包含 < code>windows.h 显式使用 winsock2.h 您必须添加 #define WIN32_LEAN_AND_MEAN 才能实现此目的 工作。

由于历史原因,Windows.h
标头默认包含
Windows 的 Winsock.h 头文件
套接字 1.1。中的声明
winsock.h头文件会冲突
与声明
所需的Winsock2.h头文件
Windows 套接字 2.0。 WIN32_LEAN_AND_MEAN 宏可防止 Winsock.h 包含在 Windows.h 标头中。

See here - if you include windows.h explicitly with winsock2.h you have to add a #define WIN32_LEAN_AND_MEAN to make this work.

For historical reasons, the Windows.h
header defaults to including the
Winsock.h header file for Windows
Sockets 1.1. The declarations in the
Winsock.h header file will conflict
with the declarations in the
Winsock2.h header file required by
Windows Sockets 2.0. The WIN32_LEAN_AND_MEAN macro prevents the Winsock.h from being included by the Windows.h header.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文