1

TStruct がパックされている場合、このコードは Str.D == 0x00223344 (0x11223344 ではない) で終了します。なんで?アーム GCC 4.7

#include <string.h>

typedef struct {
   unsigned char B;
   unsigned int D;
} __attribute__ ((packed)) TStruct; 

volatile TStruct Str;

int main( void) {
  memset((void *)&Str, 0, sizeof(Str));
  Str.D = 0x11223344;
  if(Str.D != 0x11223344) {
     return 1;
  }
  return 0;
}
4

1 に答える 1