Macro memoffset::offset_of
[−]
[src]
macro_rules! offset_of { ($father:ty, $($field:tt)+) => { ... }; }
Calculates the offset of the specified field from the start of the struct. This macro supports arbitrary amount of subscripts and recursive member-accesses.
Note: This macro may not make much sense when used on structs that are not #[repr(C, packed)]
Examples - Simple
#[macro_use] extern crate memoffset; #[repr(C, packed)] struct Foo { a: u32, b: u64, c: [u8; 5] } fn main() { assert_eq!(offset_of!(Foo, a), 0); assert_eq!(offset_of!(Foo, b), 4); assert_eq!(offset_of!(Foo, c[2]), 14); }
Examples - Advanced
#[macro_use] extern crate memoffset; #[repr(C, packed)] struct UnnecessarilyComplicatedStruct { member: [UnnecessarilyComplexStruct; 12] } #[repr(C, packed)] struct UnnecessarilyComplexStruct { a: u32, b: u64, c: [u8; 5] } fn main() { assert_eq!(offset_of!(UnnecessarilyComplicatedStruct, member[3].c[3]), 66); }