C++中struct成员的偏移量的计算
2012-02-13 11:20
696 查看
C++中,计算struct成员的偏移量,有如下三种方法可用。
//假设有定义如下: struct st_test { int a; char b; double c; }; //现想要求 b 相对于 st_test 的偏移地址。 // 1 ): 常用的方法 (size_t)&(((st_test *)0)->b) // 2) : 使用stl的定义, 要包含 <stddef.h> 头文件 offsetof(st_test , b) //offsetof的定义其实是这样的 //#define offsetof(s,m) (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m)) // 3) : 指针相减, char*是必须的, 表示一个字节的宽度 st_test stc; (size_t)((char*)(&stc.b) - (char*)&stc)
相关文章推荐
- [C/C++标准库]_[初级]_[计算结构体成员的偏移量]
- [C/C++标准库]_[初级]_[计算结构体成员的偏移量]
- C++变成规范之41:将数据成员设为私有的,无行为的聚类(C语言形式的struct除外)
- Offsetof 计算struct元素在struct内部地址偏移量
- C++:获取类成员的偏移量
- 【C++】计算struct结构体占用的长度
- C++中数组求偏移量计算公式
- C++中常见数据类型的sizeof值,以及计算struct和union的详细方法
- C++ 字节对齐分析,struct成员指定位大小
- 在c++的struct中使用类成员导致android下崩溃-SIGSEGV
- C++回顾之static成员、static成员函数及类对象大小计算
- C/C++ struct 成员对齐
- 计算结构体内成员的内存偏移量
- C语言计算一个结构体内成员地址的偏移量的两种方法(代码实例)
- C或C++中struct内存对齐计算精简方案
- C# 使用 StructLayoutAttribute 时 C# /C++ 内存空间分配与成员对齐问题
- [转]C++中sizeof(struct)怎么计算?
- C++ 11中class/struct成员的初始化的简单探讨
- c/c++中使用sizeof计算结构体struct和类class的长度(字节)
- [转]C++中sizeof(struct)怎么计算?