//-Wall -Wextra -Wpedantic -Wshadow -Wconversion #include #include #define TEST_A #define TEST_B typedef struct { struct { union { unsigned char uc; unsigned int ui; } TEST_A; unsigned int val_1; } TEST_B; unsigned int val_2; } block_1; typedef struct { struct { union { unsigned char uc; unsigned int ui; } TEST_C; unsigned int val_1; } TEST_D; unsigned int val_2; } block_2; typedef struct { struct { union { unsigned char uc; unsigned int ui; }; unsigned int val_1; }; unsigned int val_2; } block_3; int main() { block_1 b1; b1.ui = 123; unsigned int v = b1.ui; printf("(1) %d\n", v); block_2 b2; b2.TEST_D.TEST_C.ui = 456; v = b2.TEST_D.TEST_C.ui; printf("(2) %d\n", v); block_3 b3; b3.ui = 789; v = b3.ui; printf("(3) %d\n", v); return 0; } /* Output: (1) 123 (2) 456 (3) 789 */