温馨提示×

c++ offsetof在结构体中的用法是什么

c++
小樊
84
2024-08-11 09:16:36
栏目: 编程语言

在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宏接受两个参数:结构体类型和结构体中的成员名。它会返回该成员相对于结构体起始地址的偏移量。在上述例子中,输出会显示abc成员的偏移量。

需要注意的是,offsetof宏只能用于POD类型的结构体(Plain Old Data),即不包含虚函数或继承等特性的结构体。对于包含非POD类型的结构体,可以使用std::offsetof函数。

0