/* c++ -Wpadded testprog.c; a.out */ #include #include #define MAX_GAMMA_RAYS 30 typedef struct TRACKED_GAMMA_RAY { long long int timestamp; /* timestap of first interaction point */ float esum; /* gamma ray energy */ int ndet; /* number of interactions */ float fom; /* figure of merit */ int tracked; /* 1==if tracked */ float x0, y0, z0, e0; /* first interaction point */ float x1, y1, z1, e1; /* second interaction point */ } TRACKED_GAMMA_RAY; typedef struct TRACKED_GAMMA_HIT { int ngam; int pad; TRACKED_GAMMA_RAY gr[MAX_GAMMA_RAYS]; } TRACKED_GAMMA_HIT; int main () { /* do some sanety check here (64vs32 bit machines) */ printf ("sizeof(TRACKED_GAMMA_HIT)=%i\n", sizeof (TRACKED_GAMMA_HIT)); printf ("sizeof(TRACKED_GAMMA_RAY)=%i\n", sizeof (TRACKED_GAMMA_RAY)); printf ("MAX_GAMMA_RAYS=%i\n", MAX_GAMMA_RAYS); printf ("%i*%i+2*%i ", MAX_GAMMA_RAYS, sizeof (TRACKED_GAMMA_RAY), sizeof (int)); printf ("manual size=%i\n", MAX_GAMMA_RAYS * sizeof (TRACKED_GAMMA_RAY) + 2 * sizeof (int)); if (sizeof (TRACKED_GAMMA_HIT) != (MAX_GAMMA_RAYS * sizeof (TRACKED_GAMMA_RAY) + 2 * sizeof (int))) { printf ("problem with size of TRACKED_GAMMA_HIT\n"); exit (1); } else printf ("size of TRACKED_GAMMA_HIT is OK\n"); exit (0); };