在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函數。