Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Alignment requirement of basic types |
| Date | 2015-04-03 11:37 -0400 |
| Organization | Self |
| Message-ID | <551EB3B9.7090206@verizon.net> (permalink) |
| References | <mfm5mg$4rp$1@dont-email.me> |
On 04/03/2015 09:48 AM, Noob wrote:
> Hello,
>
> I had always been under the impression that objects of a given type
> had to be size-aligned, i.e.
> 2-byte objects had to be 2-byte aligned,
> 4-byte objects had to be 4-byte aligned,
> etc
>
> However, I could not find this guarantee in C99 TC3 (N1256).
> And another poster claims that platforms may allow 4-byte
> objects to be {1,2,4}-byte aligned.
>
> I suppose I was mistaken?
Yes.
The only relevant requirement is that sizeof(type) must be a positive
integer multiple of _Alignof(type). This requirement is not explicitly
stated anywhere, but it can be derived from consideration of how arrays
are implemented. It's entirely possible to meet that requirement by
having _Alignof(type) be 1 for all types.
Note: _Alignof() is a new feature of C2011, while your question is about
C99. However, the concept of alignment existed even in C90, and
_Alignof() provides a convenient notation for talking about that
concept, even when discussing versions of C that don't support that feature.
C2011 requires that alignments must be powers of 2, no such requirement
existed in earlier versions of the C standard. I've no idea whether
there's ever been an implementation of C where that wasn't the case.
> Do you know platforms where 4-byte types are only 2-byte aligned?
I'm prohibited from writing platform-specific code. As a result, I've
specialized in knowing what's not guaranteed, and how to write code so
it doesn't rely on those non-existent guarantees. I'm correspondingly
less well informed about what actual implementations do. Other people
here who are allowed to write non-portable code can answer that question
better than I can.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Alignment requirement of basic types Noob <root@127.0.0.1> - 2015-04-03 15:48 +0200
Re: Alignment requirement of basic types Tim Prince <tprince@computer.org> - 2015-04-03 10:23 -0400
Re: Alignment requirement of basic types James Kuyper <jameskuyper@verizon.net> - 2015-04-03 11:37 -0400
Re: Alignment requirement of basic types John Temples <usenet@xargs-spam.com> - 2015-04-03 17:21 +0000
Re: Alignment requirement of basic types James Kuyper <jameskuyper@verizon.net> - 2015-04-03 13:45 -0400
Re: Alignment requirement of basic types Kaz Kylheku <kaz@kylheku.com> - 2015-04-03 18:40 +0000
Re: Alignment requirement of basic types Keith Thompson <kst-u@mib.org> - 2015-04-03 10:50 -0700
Re: Alignment requirement of basic types glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-04-03 19:02 +0000
Re: Alignment requirement of basic types Kaz Kylheku <kaz@kylheku.com> - 2015-04-03 18:01 +0000
Re: Alignment requirement of basic types Richard Damon <Richard@Damon-Family.org> - 2015-04-03 12:05 -0400
Re: Alignment requirement of basic types glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-04-03 16:48 +0000
Re: Alignment requirement of basic types Kaz Kylheku <kaz@kylheku.com> - 2015-04-03 16:46 +0000
Re: Alignment requirement of basic types Keith Thompson <kst-u@mib.org> - 2015-04-03 11:06 -0700
Re: Alignment requirement of basic types Robert Wessel <robertwessel2@yahoo.com> - 2015-04-05 22:22 -0500
Re: Alignment requirement of basic types Waldek Hebisch <hebisch@antispam.uni.wroc.pl> - 2015-04-04 23:15 +0000
csiph-web