This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Compiling GCC With a C++ Compiler (g++)


[ Phil Edwards snecked from Cc: line in accordance with his wish to escape
"this eternal thread"! ]

> -----Original Message-----
> From: Geoffrey Keating 
> Sent: 13 October 2004 20:42

> On 13/10/2004, at 8:23 AM, Dave Korn wrote:

> >   Huh?  Are you saying that in:
> >
> > typedef struct { const char x } AA;
> >
> > AA *py1, py2;
> > AA y1 = { z };
> >
> >   py1 = malloc (sizeof *py2);
> >   py2 = &y1;
> >
> > it is valid to say
> >
> >   *(char *)(&py1->x) = '?';
> >
> > but not valid to say
> >
> >   *(char *)(&py2->x) = '?';
> 
> Yes, that sounds right.


  Wow, we really seem to me to be entering the realm of the bizarre here.
What about this function: is it valid, conformant C?

void fubar (const char *x)
{
    *(char *)x = '?';
}

  Is it not implicit from what you've just told me that the answer to the
question of whether or not that function is valid conformant C depends on
whether the value of the pointer you pass into it was originally derived
from a call to malloc (valid) or by taking the address-of a local or static
variable (not valid)?  Does this still make sense?  It's making my mind
boggle in several directions at once.

    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....
 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]