Xref: news2.mv.net comp.os.msdos.djgpp:5759 From: locke AT mcs DOT net (Peter Johnson) Newsgroups: comp.os.msdos.djgpp Subject: C/C++ Packing (was: Re: [_dos_]find{first|next} problem!) Date: Tue, 09 Jul 1996 05:29:13 GMT Organization: BiLogic Lines: 49 Message-ID: <31e1ed3d.40380323@news.mcs.net> References: <836767569 DOT 26385 DOT 0 AT abwillms DOT demon DOT co DOT uk> NNTP-Posting-Host: locke.pr.mcs.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp On Sun, 07 Jul 1996 19:27:32 GMT, alaric AT abwillms DOT demon DOT co DOT uk (Alaric B. Williams) wrote: > >It seems to be a structure packing problem... the ff.c in djtst claims >that the offset of ff_name is 30; but the SAME test in my code returns >32. Why is the packing changing? I compile both sources with the same >command line! > >Further examination shows that the fact that my file is a .cc and the >ff.c file is a .c matters. Why does the packing change????? they both >use the same include file dir.h, which lists the struct as being fully >packed! Here is what I found after copying the ff.c file to ff2.cc in the /tests/libc/dos directory, and compiling both (one as c, one as c++): Output of compiled ff.c: sizeof(ff) = 290 ff.ff_attrib = 21 ff.ff_ftime = 22 ff.ff_fdate = 24 ff.ff_fsize = 26 ff.ff_name = 30 (null): error Output of compiled ff.cc (identical to ff.c): sizeof(ff) = 292 ff.ff_attrib = 21 ff.ff_ftime = 22 ff.ff_fdate = 24 ff.ff_fsize = 28 ff.ff_name = 32 (null): error For some reason, ff_fdate is not packed as a SHORT!! instead it is packed on a 4-byte margin...... HMMM! DJ, Charles - Any ideas why packing would differ C/C++?? ------------------------------------- Peter Johnson ------------------------------------- locke AT mcs DOT net http://www.mcs.net/~locke/ ------------------------------------- Freelance C/C++/Pascal/Asm programmer for DJGPP, Borland, and Watcom compilers Member of BiLogic demo group -------------------------------------