c - 在哪里可以找到 ntohl

标签 c winapi header

我正在 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'.

最佳答案

它位于 winsock2.h 中,按照the MSDN docs并且,来 self 的开发系统(在 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

根据内存,解决此问题的一种方法是在包含 windows.h 之前定义 WIN32_LEAN_AND_MEAN。这将阻止包含一些较少使用的 header 。

另一种方法是在包含 windows.h 之前定义 _WINSOCKAPI_ - 这将阻止包含 winsock.h

第三种(可能是更好的)方法是简单地将 winsock2.h 包含在 之前 windows.h 中。 winsock2.h 定义了 _WINSOCKAPI_,因此与上一段具有相同的效果。

关于c - 在哪里可以找到 ntohl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355785/

相关文章:

c - C 初学者 - 编程算术算法?

c - C 程序输出错误

PHP header 位置重定向不起作用 - 为什么?

r - 如何根据 Excel 电子表格中重复标题的值在 R 中创建新列?

c - 重复 timerfd 事件适用于 epoll 而不是 poll

c - 68000,可移植JIT库

c - 为什么每次运行时虚拟内存中分配的 block 差异如此之大?

c - WM_DEVMODECHANGE 的设备名称应该是窄的还是宽的?

c# - 调用 Windows 安全对话框(在 C# 或 VB.NET 中)

c++ - 如何通过包含相应的 .h 文件从 .cpp 中获取函数/类定义?