This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: problem with sizeof struct alignment


Demmer, Thomas wrote:

Andrew Hill <dru at treshna dot com> wrote



I have this struct


typedef struct { double arrival; double departure; char status; int bookingid; int userid; } RoomStatus;


I'm using gcc with no compiler options or flags. Under linux with gcc, sizeof(RoomStatus) returns me 28 - as i would expect. If I use a borland C++ compiler it also returns a sizeof 28. But with cygwin + gcc it returns a sizeof 32. I'm a bit confused. Does cgwin + gcc align to nearest 8bytes for structs? Is there a compiler option to tell it to use 4 byte alignment? Is it just me whos having this problem?

I checked the sizeof for int, double and char and they all correct,
changing the char to an int or specifically saying its a 4bit int
doens't seem to make any difference.



gcc -mno-align-double is your friend to achieve ABI compatibility. This mis-feature
was introduced with gcc-3.whatever. Search the mailing
list for a remark from Brian Ford giving a heads up on this problem.





Thanks I'll try that. Found the orginal post by Brian.




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]