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] | |
[ 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.
int main(void)
{
fubar(NULL);
return 0;
}Attachment:
smime.p7s
Description: S/MIME cryptographic signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |