On Jun 29, 2011, at 10:56 AM CDT, Jeff Squyres wrote: > There's probably an alignment gap between the short and char array, and > possibly an alignment gap between the char array and the double array > (depending on the value of SHORT_INPUT and your architecture). > > So for your displacements, you should probably actually measure what the > displacements are instead of using sizeof(short), for example. > > tVStruct foo; > aiDispsT5[0] = 0; > aiDispsT5[0] = ((char*) &(foo.sCapacityFile) - (char*) &foo);
There's a C-standard "offsetof" macro for this calculation. Using it instead of the pointer math above greatly improves readability: http://en.wikipedia.org/wiki/Offsetof So the second line becomes: ----8<---- aiDispsT5[1] = offsetof(tVStruct, sCapacityFile); ----8<---- -Dave