Skip to content
Snippets Groups Projects
padding_unspecified_value_6.c 510 B
Newer Older
Andre Maroneze's avatar
Andre Maroneze committed
void g(char *c, float *f) {
  *c='A';
  *f=1.0;
}
typedef struct { char c; float f; int i; } st;
int main() {
  // check there is a padding byte between c and f
  size_t offset_padding = offsetof(st,c)+sizeof(char);
  if (offsetof(st,f)>offset_padding) {
      st s; 
      unsigned char *p = 
        ((unsigned char*)(&s)) + offset_padding;
      *p = 'D';
      g(&s.c, &s.f);
      unsigned char c4 = *p; 
      // does c4 hold 'D', not an unspecified value?
      printf("c4=%c\n",c4);
  }
  return 0;
}