在C++中,offsetof
是一个宏,用于计算结构体中成员的偏移量。它的用法如下:
#include <iostream>
#include <cstddef>
struct MyStruct {
int a;
int b;
double c;
};
int main() {
std::cout << "Offset of member 'a': " << offsetof(MyStruct, a) << std::endl;
std::cout << "Offset of member 'b': " << offsetof(MyStruct, b) << std::endl;
std::cout << "Offset of member 'c': " << offsetof(MyStruct, c) << std::endl;
return 0;
}
在上面的例子中,offsetof
宏接受两个参数:结构体类型和结构体中的成员名。它会返回该成员相对于结构体起始地址的偏移量。在上述例子中,输出会显示a
、b
和c
成员的偏移量。
需要注意的是,offsetof
宏只能用于POD类型的结构体(Plain Old Data),即不包含虚函数或继承等特性的结构体。对于包含非POD类型的结构体,可以使用std::offsetof函数。