//-Wall -Wextra -Wpedantic -Wshadow -Wconversion
#include <stdio.h>
#include <stdlib.h>
#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
*/
Comments