Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #15765

Re: struct alignment

From Kleuske <kleuske@nowhere.net>
Newsgroups comp.lang.c
Subject Re: struct alignment
Date 2012-01-11 19:23 +0000
Organization A noiseless patient Spider
Message-ID <jeknip$vfe$3@dont-email.me> (permalink)
References <jekkil$u7v$1@speranza.aioe.org>

Show all headers | View raw


On Wed, 11 Jan 2012 13:31:53 -0500, Mark saw fit to publish the following:

> Hello:
> 
> #define MAX_SIZE 8
> 
> enum my_enum
> {
>     VAL1 = 0;
>     VAL2,
>     VAL3,
>     VAL4,
>     VAL_MAX
> };
> 
> struct my_struct
> {
>   enum my_enum e;
>   int  w[MAX_SIZE];
> };
> 
> Can a layout in such structure cause alignment issues on a target
> platform? I understand it much depends on a platform, but generally C
> compiler is allowed to do padding of structures, so for example on 32
> bit machine, where 'int' is 32 bit long:
> 
> struct my_struct
> {
>     int w[MAX_SIZE];
> }
> 
> is aligned (as fas as I understand) so compiler probably won't be doing
> anything else with its layout, but adding 'enum my_enum' in the
> structure can poptentially get the structure un-aligned on such machine.
>  Should I be doing anything special to avoid this and should I be
> avoiding it at all ?
> 
> Would be very thankful for clarifications!
> 
> Mark

In general you should not rely on things being padded or not. Not only can
it differ on different machines, it can differ for different settings of the
same compiler.

Behind the scenes, an enum is treated like an integer and the same issues can
arise. If your code depends on things being padded this or that way or not at
all, start thinking about ways of doing it differently.

-- 
Schshschshchsch.
		-- The Gorn, "Arena", stardate 3046.2

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

struct alignment "Mark" <mark_cruzNOTFORSPAM@hotmail.com> - 2012-01-11 13:31 -0500
  Re: struct alignment Kleuske <kleuske@nowhere.net> - 2012-01-11 19:23 +0000
  Re: struct alignment "Scott Fluhrer" <sfluhrer@ix.netcom.com> - 2012-01-11 16:58 -0500
  Re: struct alignment Ralf Damaschke <rwspam@gmx.de> - 2012-01-11 22:08 +0000
  Re: struct alignment Keith Thompson <kst-u@mib.org> - 2012-01-11 14:42 -0800
    Re: struct alignment Dr Nick <3-nospam@temporary-address.org.uk> - 2012-01-12 06:56 +0000
      Re: struct alignment Ian Collins <ian-news@hotmail.com> - 2012-01-12 20:42 +1300
        Re: struct alignment Keith Thompson <kst-u@mib.org> - 2012-01-12 02:20 -0800
          Re: struct alignment Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-01-18 17:03 +0000
            Re: struct alignment Kaz Kylheku <kaz@kylheku.com> - 2012-01-18 17:21 +0000
              Re: struct alignment jgk@panix.com (Joe keane) - 2012-01-19 21:42 +0000
                Re: struct alignment blp@cs.stanford.edu (Ben Pfaff) - 2012-01-19 13:57 -0800
            Re: struct alignment Stephen Sprunk <stephen@sprunk.org> - 2012-01-18 11:57 -0600
              Re: struct alignment Keith Thompson <kst-u@mib.org> - 2012-01-18 14:28 -0800
            Re: struct alignment Robert Wessel <robertwessel2@yahoo.com> - 2012-01-18 13:10 -0600
              Re: struct alignment Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-01-19 11:34 +0000
                Re: struct alignment Robert Wessel <robertwessel2@yahoo.com> - 2012-01-19 14:50 -0600
                Re: struct alignment Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-01-21 11:49 +0000

csiph-web