在过去的几天里,我一直在忙着做一些网络编程,我似乎无法找出u戡int32戡t abd bpf戡u戡int32数据类型之间的区别。
u_int32_t表示32个无符号位。bpf______int32的意思不一样吗?
因为有些函数以某种形式读取IP地址。
pcap库中的某些函数(如pcap__lookupnet)要求网络地址的格式为bpf____int32。
我很想知道区别
最佳答案
程序员以添加间接层为生。它们几乎肯定是同一类型,你可以在C++中用#include <typeinfo>
和后面的“cc>”来检查。
在一些实现中,至少有一种可能性,一种是typeid(u_int32_t) == typeid(bpf_u_int32)
,另一种是unsigned int
。
发生的事情是,两个不同的人独立地为32位无符号类型选择了一个名称(或者可能是同一个人出于两个稍微不同的目的)。其中一个使用了“bpf”前缀,在本文中代表Berkeley Packet Filter,因为它与包捕获相关。另一个没有。一个使用了表示类型名的unsigned long
后缀,另一个没有。除此之外,他们选择了相似的名称。
C99和C++ 11都为32位无符号类型引入了一个标准名称:_t
。不过,这不会阻止人们为它创建自己的别名。
关于c++ - u_int32_t和bpf_u_int32,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13681496/