delorie.com/archives/browse.cgi | search |
From: | "Tonu Aas" <tonu AT ids DOT ee> |
Newsgroups: | comp.os.msdos.djgpp |
References: | <96eb2770 DOT 0206270530 DOT 3d2253dc AT posting DOT google DOT com> |
Subject: | Re: How to align members/data under gcc/DJGPP? |
Date: | Thu, 27 Jun 2002 19:06:02 +0300 |
Lines: | 83 |
X-Priority: | 3 |
X-MSMail-Priority: | Normal |
X-Newsreader: | Microsoft Outlook Express 6.00.2600.0000 |
X-MimeOLE: | Produced By Microsoft MimeOLE V6.00.2600.0000 |
NNTP-Posting-Host: | ids.ids.ee |
Message-ID: | <3d1b37f1$1@news.infonet.ee> |
X-Trace: | news.infonet.ee 1025193969 ids.ids.ee (27 Jun 2002 18:06:09 +0200) |
Organization: | INFONET.EE |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
> I can't find in FAQ (sorry, maybe I missed it), how to align struct > members under gcc/DJGPP? What is pragma/option doing this? I use header files for that: struct aligned_struct { char a_default; #include "align4.h" char a_4; #include "popalign.h" char aa_default; } Works well with several compilers so far... (also gcc) Its unbelievable that aligning isnt part of C standard, but it is. Writing protable code in C is hard work. Look for some portabel code: 50% of text are #ifdef-s for several compilers, OS-s and platforms stupidities. --------------------- align1.h: #ifndef _MSC_VER #pragma nopackwarning #endif #if !(defined(lint) || defined(_lint)) # ifndef RC_INVOKED # if(_MSC_VER >= 800) || (defined(__BORLANDC__)) # pragma warning(disable:4103) # if !defined(MIDL_PASS) || defined(__midl) # pragma pack(push) # endif # pragma pack(1) # else # pragma pack(1) # endif # endif #endif ----------------------- align2.h: #pragma nopackwarning #if !(defined(lint) || defined(_lint)) # ifndef RC_INVOKED # if(_MSC_VER >= 800) || (defined(__BORLANDC__)) # pragma warning(disable:4103) # if !defined(MIDL_PASS) || defined(__midl) # pragma pack(push) # endif # pragma pack(2) # else # pragma pack(2) # endif # endif // ndef RC_INVOKED #endif // !(defined(lint) || defined(_lint))#pragma nopackwarning -------------- ... and so on, and after ----------------- popalign.h: #ifndef _MSC_VER #pragma nopackwarning #endif #if !(defined(lint) || defined(_lint)) # if(_MSC_VER >= 800) || defined(__BORLANDC__) # pragma warning(disable:4103) # if !defined(MIDL_PASS) || defined(__midl) # pragma pack(pop) # else # pragma pack() # endif # else # pragma pack() # endif #endif
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |