I think it is fine to just leave the `sizeof(header)` "repeat", for the "repeat" is in fact pretty small and straight forward. but this macro definition expose a name outside its scope, and restricts it to `header`, if one day we want to manipulate two record header types in one function, we need refactor it again.