Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/AutoCorres2/doc/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 31.4.2026 mit Größe 4 kB image not shown  

Quelle  union.c

  Sprache: C
 

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






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.