comp.lang.ada
 help / color / mirror / Atom feed
From: hook@cscsun3.larc.nasa.gov (Ed Hook)
Subject: Re: HELP ! need to insert value in array !!
Date: 1997/06/30
Date: 1997-06-30T00:00:00+00:00	[thread overview]
Message-ID: <5p8bd0$rhc$2@reznor.larc.nasa.gov> (raw)
In-Reply-To: dewar.867608134@merv


In article <dewar.867608134@merv>, dewar@merv.cs.nyu.edu (Robert Dewar) writes:
|> Michael said
|> 
|> <<It's quite easy to detect the difference.  For example,
|> 
|>         #include <stdio.h>
|> 
|>         int main(void)
|>         {
|>           int a[2];
|>           unsigned long d = (char*) a[1] - (char*) a[0];

   Actually, the line above should probably be:

             unsigned long d = (char *)(a + 1) - (char *)a;

|>           printf ("%lu %lu\n", d, sizeof(int));
|>           return 0;
|>         }
|> 
|> This must print the same number twice.
|> >>
|> 
|> 
|> I am unable to prove that the above code has well defined semantics
|> according to the ANSI standard. The casts of integer pointers into
|> character pointers seem quite implementation dependent in their
|> exact meaning to me. In fact it seems quite hard yto implement
|> this natural semantics on some word oriented machines.
|> 
|> Also, you did not answer my point about alignment. Suppose the array
|> element type is one whose size is not a multiple of its alignment.
|> How can gaps be avoided in such a case?
|>

   The compiler is allowed to insert padding bytes _in_the_element_;
   it's just not permitted to add additional padding _between_ elements.
   That's needed to guarantee (for instance) that an allocation of
   n * sizeof(<type>) bytes can successfully hold an array of n elements
   of type <type>.
 
|> Or are you saying that the ANSI standard requires that the size be a
                                            .allows.
|> multiple of the required alignment. If so, please quote chapter and
|> verse.
|> 

  I don't have a copy of the Standard handy, so I'll let someone else
  provided citations.

|> It would be useful to know whether you are talking about things that "everyone
|> knows must be so", or things that are guaranteed to have the semantics you claim
|> from the standard.
|>

  I'm fairly certain that this (=="no padding between array elements") _is_
  guaranteed by the Standard (but, again, I can't provide the requested
  "chapter and verse").
 
|> if the latter, relevant references to the standard would be helpful in
|> following your argument.
|> 

-- 
 Ed Hook                              |       Copula eam, se non posit
 Computer Sciences Corporation        |         acceptera jocularum.
 NASA Langley Research Center         | Me? Speak for my employer?...<*snort*>
 Internet: hook@cscsun3.larc.nasa.gov |        ... Get a _clue_ !!! ...




  parent reply	other threads:[~1997-06-30  0:00 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <33A9C27C.22F7@post4.tele.dk>
     [not found] ` <5oci49$97g@crl.crl.com>
     [not found]   ` <866920621snz@genesis.demon.co.uk>
1997-06-27  0:00     ` HELP ! need to insert value in array !! Ralph Silverman
1997-06-28  0:00       ` Lawrence Kirby
     [not found]       ` <dewar.867554609@merv>
1997-06-29  0:00         ` Mike Rubenstein
1997-06-29  0:00           ` Robert Dewar
1997-06-29  0:00             ` Mike Rubenstein
1997-06-29  0:00               ` Robert Dewar
1997-06-29  0:00                 ` Mike Rubenstein
1997-06-30  0:00                 ` Ed Hook [this message]
1997-07-04  0:00                 ` Richard A. O'Keefe
1997-07-07  0:00                   ` Clive D.W. Feather
1997-07-01  0:00               ` Al Bowers
1997-07-01  0:00             ` Richard Kenner
1997-07-01  0:00               ` Robert Dewar
1997-07-02  0:00             ` Christian Froeschlin
1997-07-02  0:00               ` Robert Dewar
1997-07-04  0:00             ` Richard A. O'Keefe
1997-07-04  0:00               ` Robert Dewar
1997-07-04  0:00                 ` Mike Rubenstein
1997-07-05  0:00                   ` Robert Dewar
1997-07-05  0:00                     ` Mike Rubenstein
1997-07-05  0:00                       ` Mike Rubenstein
1997-07-05  0:00                     ` Larry Kilgallen
1997-07-10  0:00                     ` Alan Bowler
1997-07-07  0:00                 ` Mark H. Wood
1997-07-09  0:00                   ` Robert Dewar
1997-07-10  0:00                     ` Lawrence Kirby
1997-07-07  0:00                 ` Shmuel (Seymour J.) Metz
1997-07-08  0:00                 ` Richard Kenner
1997-06-30  0:00         ` Samuel T. Harris
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox