RicardasSim icon

Anonymous struct union

RicardasSim | PRO | 08/12/26 05:22:15 PM UTC | 0 ⭐ | 13747 👁️ | Never ⏰ | []
C |

1.26 KB

|

None

|

0 👍

/

0 👎

//-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