Packed Structures?

rbk at sequel.UUCP rbk at sequel.UUCP
Fri Sep 30 02:46:01 AEST 1983

Has anyone ever thought about the problems of exchanging binary
data-structures between two different machines/compilers?  (of course
you have!)  I had a thought about "packed" structures (borrowing an
idea from Pascal) that might help some of the problem:

	struct	garf	{
		char	g_char;
		short	g_int;
		char	g_char2;
		long	g_long;

This has "holes" in it that will align differently on differnet machines
(eg, VAX vs PDP-11).  Suppose there was "packed struct", such as:

	packed struct garf g_var;

That insisted the structure have all possible holes squeezed out of it;
on a VAX, NS16k, 8086/286 all holes go away; on PDP-11 and 68K (I
think) you still have short/int requiring even alignment.  This should
be easy for compilers to implement, and doesn't cost the program
anything unless used.

The binary-data-structure problem is a tough one in general.  "Packed"
doesn't solve the problem completely (and doesn't address the byte-order
problem at all), but might help some.  Clearly if *you* get to specify the
structure (and you are careful) the problem is minimized without this;
however, there are many pre-existing data-structures out there that you
have to live with.

Comments?  Any other thoughts?  Flames >& /dev/null, please...
	Bob Beck
	Sequel Computer Systems

More information about the Comp.lang.c mailing list