#include <stdio.h> #include <stddef.h> #define offset(type, member) ((size_t)&(((type*)0)->member)) typedef struct { char a; int b; short c; } MyStruct; void print_offsets() { // printf ("Offset of a: %lu\n",offsetof(MyStruct, a)); // printf ("Offset of b: %lu\n",offsetof(MyStruct, b)); // printf ("Offset of c: %lu\n",offsetof(MyStruct, c)); printf ("Offset of a: %lu\n",offset(MyStruct, a)); printf ("Offset of b: %lu\n",offset(MyStruct, b)); printf ("Offset of c: %lu\n",offset(MyStruct, c)); printf ("Size: %lu\n",sizeof(MyStruct)); } int main() { print_offsets(); return 0; }
Test Cases
Test Results
Input
Expected Output
Offset of a: 0 Offset of b: 4 Offset of c: 8 Size: 12