/*
* Copyright ( c ) 2022 Apple Inc . All rights reserved .
*
* SPDX - License - Identifier : BSD - 2 - Clause
*/
#include "union.h"
/*
typedef unsigned int uint32 ;
typedef union myunion {
unsigned int y ;
int x ;
} myunion ;
*/
typedef enum color {red, green, blue} color;
typedef struct my_struct {
int fld_i;
int fld_k;
color c;
} my_struct;
typedef union reg {
unsigned int all;
struct {
unsigned int f1:16 ;
unsigned int f2:16 ;
}f;
} reg;
typedef union regs {
unsigned int all[2 ];
struct {
reg reg1;
reg reg2;
}r;
} regs;
typedef struct nested_struct {
unsigned int xx;
char ch;
unsigned int xy [2 ];
unsigned int xz [2 ];
my_struct nns [112 ];
struct {
unsigned int n1;
unsigned int n2;
unsigned int n3;
unsigned int n4;
unsigned int n5;
unsigned int n6;
}n;
} nested_struct;
void bar (void ) {
nested_struct ns;
}
typedef struct enclosing_struct {
unsigned int all;
union nested_union {
unsigned int f1;
unsigned int f2;
}f;
union nested_union* p;
} nested_union;
typedef union mybitfield_union {
unsigned int all;
struct {
uint32 f1:8 ;
unsigned int f2:8 ;
unsigned int f3:4 ;
unsigned int f4:4 ;
unsigned int f5:4 ;
unsigned int f6:4 ;
}f;
} mybitfield_union;
typedef struct mybitfield {
unsigned int g1:8 ;
unsigned int g2:8 ;
unsigned int g3:8 ;
unsigned int g4:4 ;
unsigned int g5:4 ;
} mybitfield;
typedef union mybitfield_union1 {
unsigned int all;
mybitfield g;
} mybitfield_union1;
typedef union mystruct_array_union {
unsigned int all1[2 ];
struct {
unsigned int f1;
unsigned int f2;
}f;
} mystruct_array_union;
int foo2() {
myunion u;
int k;
u.x = 42 ;
//u.y = "c";
k = u.x;
return k;
}
void bar2 () {
mybitfield_union ub;
ub.all = 42 ;
mybitfield_union1 ub1;
ub1.all = 43 ;
nested_union nu;
nu.f.f1 = 42 ;
my_struct s;
nested_struct ns;
}
int car () {
struct local_nested_struct {
unsigned int xx;
struct {
unsigned int n1;
unsigned int n2;
unsigned int n3;
unsigned int n4;
unsigned int n5;
unsigned int n6;
}n;
};
struct local_nested_struct x;
x.n.n1 = 22 ;
if (x.n.n1 == 23 ) {return 0 ;}
return 1 ;
}
mystruct_array_union g;
void access (void ) {
mystruct_array_union *p = &g;
p->f.f1 = 2 ;
}
void bar1 () {
nested_struct ns;
}
regs REGS;
void reg_fun (void ) {
unsigned int r = REGS.r.reg1.all;
};
typedef union {
unsigned int all1[1 ];
struct {
unsigned int f1;
} f;
union {
unsigned int x1;
unsigned int x2;
} g;
} my_union;
unsigned access1 (my_union u) {
return u.all1[0 ];
}
my_union update1 (my_union u, unsigned n) {
u.all1[0 ] = n;
return u;
}
void heap_update1 (my_union * u, unsigned n) {
u->all1[0 ] = n;
}
unsigned access2 (my_union u) {
return u.g.x2;
}
my_union update2 (my_union u, unsigned n) {
u.g.x2 = n;
return u;
}
void heap_update2 (my_union * u, unsigned n) {
u->g.x2 = n;
}
unsigned access3 (my_union u) {
return u.g.x1;
}
unsigned access4 (my_union u) {
return u.f.f1;
}
unsigned ptr_access3 (my_union * u) {
return u->g.x1;
}
unsigned ptr_access_nested_struct (nested_struct * p) {
return p->n.n1;
}
typedef struct {
unsigned fst;
unsigned snd;
} unsigned_pair;
typedef struct {
signed fst;
signed snd;
} signed_pair;
typedef union {
unsigned_pair u;
signed_pair s;
} open_union;
typedef union {
struct {
char b1;
char b2;
char b3;
char b4;
} all;
unsigned f;
} fab;
unsigned access_fab1(fab * p) {
return p->f;
}
char access_fabi2(fab * p) {
return p->all.b1;
}
unsigned get_unsigned_first (open_union * p) {
return (p->u.fst);
}
unsigned get_signed_first (open_union * p) {
return (p->s.fst);
}
unsigned_pair * get_unsigned (open_union * p) {
return (&(p->u));
}
typedef union {
struct {
char b1;
char b2;
unsigned short s;
} composed1;
struct {
char c1;
char c2;
union {
unsigned short s1;
unsigned short s2;
} s;
} composed2;
unsigned int raw;
} packed_union;
char get_b1 (packed_union x) {
return x.composed1.b1;
}
char get_c1 (packed_union x) {
return x.composed2.c1;
}
short get_s1 (packed_union x) {
return x.composed2.s.s1;
}
short get_s2 (packed_union x) {
return x.composed2.s.s2;
}
unsigned get_raw (packed_union x) {
return x.raw;
}
Messung V0.5 in Prozent C=95 H=97 G=95
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland