home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!crdgw1!rdsunx.crd.ge.com!bart!volpe
- From: volpe@bart.NoSubdomain.NoDomain (Christopher R Volpe)
- Newsgroups: comp.std.c
- Subject: Re: Character arrays in structures and address alignment -- any standard?
- Message-ID: <1992Jul31.010941.7282@crd.ge.com>
- Date: 31 Jul 92 01:09:41 GMT
- References: <1992Jul28.063356.28005@sq.sq.com> <14216@ksr.com> <Bs5pMJ.3nM@twwells.com> <7022@skye.ed.ac.uk>
- Sender: volpe@bart (Christopher R Volpe)
- Reply-To: volpe@ausable.crd.ge.com
- Organization: GE Corporate Research & Development
- Lines: 66
- Nntp-Posting-Host: bart.crd.ge.com
-
- In article <7022@skye.ed.ac.uk>, richard@aiai.ed.ac.uk (Richard Tobin) writes:
- |> In article <Bs5pMJ.3nM@twwells.com> bill@twwells.com (T. William Wells) writes:
- |> >: Please show a strictly conforming program which can tell the difference
- |> >: between "necessary" padding and "unnecessary" padding.
- |>
- |> >For example:
- |>
- |> > printf("%d\n", (offsetof(foo, y) - offset(foo, x)) - sizeof(int));
- |>
- |> *If* the standard allows "unnecessary" padding, this program is not
- |> strictly conforming.
- |>
- |> (1.7 Compliance)
- |>
- |> "A strictly conforming program ... shall not produce output dependent
- |> on any unspecified, undefined, or implementation-defined behavior"
-
- Your reasoning is wrong because your argument is circular. When you say,
-
- "*IF* the standard ..."
-
- above, you mean to say,
-
- "*If* the `as-if' rule can be applied here to allow unnecessary padding,
- thereby overriding a literal interpretation which clearly states that
- unnecessary padding is not allowed, THEN the program is not strictly
- conforming."
-
- Look at the reasoning here (PRO advocates unnecessary padding):
-
- PRO: "I think unneccessary padding is perfectly ok."
- CON: "Wrong. The Standard clearly says padding can only be done for alignment
- purposes."
- PRO: "Oh yeah, well that's a *literal* interpretation, but the `as-if'
- rule states that unnecessary padding is acceptable as long as a
- strictly conforming program can't tell that it's being done. Can
- you produce such a program? I bet you can't!"
- CON: "Oh yeah? Here's one! It prints different output if the compiler
- is inserting unnecessary padding!!!"
- PRO: "But *if* unnecessary padding is ok, *then* the program isn't
- Strictly Conforming, *therefore* the as-if rule still applies,
- *therefore* unnecessary padding is ok!"
-
- PRO's last argument is equivalent to "If A then A". However, you certainly
- can't conclude A from that. The following statement is 100% true:
-
- "If the moon is made of green cheese, then the moon is made of
- green cheese."
-
- Perfectly true statement. Does that mean the moon is made of green cheese?
-
-
- |>
- |> -- Richard
- |> --
- |> Richard Tobin,
- |> AI Applications Institute, R.Tobin@ed.ac.uk
- |> Edinburgh University.
-
- -Chris
-
- --
- ==================
- Chris Volpe
- G.E. Corporate R&D
- volpecr@crd.ge.com
-