我在Windows上寻找一个头文件,我可以用来在C中获取ntohl函数,但是Winsock2.h对我来说不起作用.有谁知道其他头文件会提供什么?
以下是我尝试包含Winsock2.h时遇到的一些错误
C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(1045): error #2120: Redeclaration of 'getservbyport', previously declared at C:\Program Files (x86)\PellesC\Include\Win\winsock.h(468); expected 'PSERVENT __stdcall function(int, const char *)' but found 'struct servent * __stdcall function(int, const char *)'.
C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(135): error #2123: Redefinition of 'hostent', previously defined at C:\Program Files (x86)\PellesC\Include\Win\winsock.h(91).
C:\Program Files (x86)\PellesC\Include\Win\ws2def.h(39): error #1050: Redefinition of macro 'AF_IPX'.
C:\Program Files (x86)\PellesC\Include\Win\Winsock2.h(1310): error #2121: Redeclaration of 'LPSOCKADDR_IN'.
Run Code Online (Sandbox Code Playgroud)
这是在 winsock2.h按照MSDN文档,并从我的开发系统(中C:\Program files (x86) Microsoft SDKs\Windows\v7.0A\Include\Winsock2.h):
WINSOCK_API_LINKAGE u_long WSAAPI ntohl (__in u_long netlong);
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这对你"不起作用".如果您收到错误消息,则需要发布.
基于对为什么你遇到麻烦你的问题的修改winsock2.h,看来你要包括winsock.h和winsock2.h-这是很少是个好主意:-)它们实际上是根本不相容的,winsock2是更高版本与额外的好东西.
不幸的是,由于在大多数情况下windows.h自动包含在内,因此并不总是在您明显的控制winsock.h之下.
从内存来看,解决这个问题的方法是WIN32_LEAN_AND_MEAN在包括之前进行定义windows.h.这将阻止包含一些较少使用的标头.
另一个是_WINSOCKAPI_在包括之前定义windows.h- 这也将防止winsock.h被包括在内.
第三种(也可能是更可取的)方式只是包含winsock2.h 在之前 windows.h.winsock2.h定义_WINSOCKAPI_所以具有与前一段相同的效果.
| 归档时间: |
|
| 查看次数: |
3468 次 |
| 最近记录: |