I also don't understand Alan's comment, what has the cast of data to astructure have to do with the size of a field in the structure? Furthmore thecast of data to a struct should work on all architectures as far as C isconcerned (if you then run alignment problems then it's your mistake).

As far I can see the only reason size makes sense to be 32bit is to get somemore strict behaviour in the below code (to avoid discarding the mostsignificant 16bits in sanity checks like this):