c++ - u_int32_t 与 bpf_u_int32

标签 c++ c int

过去几天我一直忙于做一些网络编程,我似乎无法弄清楚数据类型 u_int32_t 和 bpf_u_int32 之间的区别。

u_int32_t 表示 32 个无符号位。 bpf_u_int32 不也是一样的意思吗? 因为某些函数以一种或另一种形式读取 IP 地址。 pcap 库中的某些函数(如 pcap_lookupnet)要求网络地址的格式为 bpf_u_int32。

我很想知道区别

最佳答案

程序员以添加间接层为生。它们几乎肯定是同一类型,您可以在 C++ 中使用 #include <typeinfo> 进行检查其次是 typeid(u_int32_t) == typeid(bpf_u_int32) .

在某些实现中,至少有一种可能性是 unsigned int另一个是unsigned long .

发生的事情是两个不同的人为 32 位无符号类型独立选择了一个名称(或者可能是同一个人出于两个略有不同的目的)。其中之一使用了“bpf”前缀,在此上下文中代表 Berkeley Packet Filter,因为它与数据包捕获相关。另一个没有。一个人用过 _t表示类型名称的后缀,另一个没有。除此之外,他们还选择了相似的名字。

C99 和 C++11 都引入了 32 位无符号类型的标准名称:uint32_t .不过,这不会阻止人们为它创建自己的别名。

关于c++ - u_int32_t 与 bpf_u_int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13681496/

相关文章:

c - GCC 中的汇编代码未在 Atmel Studio 中针对 AVR 环境进行编译

c - 如何在数组中存储 1 000 000 000 个项目?

python - 奇数舍入问题

c++ - 强制模板参数类继承自另一个具有部分实现参数的模板化类

c++ - 将图像序列转换为视频

c++ - Qt - 设置好友

c++ - 我在解决简单的参数相关查找/模板类型推断问题时遇到问题

c - 总和未正确添加

c - 在 C 中解析命令行参数

java - LayoutInflater 类型中的方法 inflate(int, ViewGroup, boolean) 不适用于参数 (int, int, boolean)