我正在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'. 最佳答案 它根据the MSDN docs位于winsock2.h中,并且来自我的开发系统(位于C:\Program files (x86) Microsoft SDKs\Windows\v7.0A\Include\Winsock2.h中):WINSOCK_API_LINKAGE u_long WSAAPI ntohl (__in u_long netlong);我不确定为什么这对您不起作用。如果收到错误消息,则需要发布它。根据您对为什么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,因此具有与上一段相同的效果。关于c - 在哪里可以找到ntohl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9355785/ 10-11 15:25