Hi,
I have stumbled upon a quirk that appears to me to be
illogical. Maybe someone can help me to understand this:
~~~~~~~~~~~~~~~~ sample code ~~~~~~~~~~~~~~~~~~~~~~~~~
#include <stdio.h>
const int gic = 0;
const int * gcip;
int * gip;
int main(int argc, char * argv[]) {
const int ic = 0;
const int * cip;
int * ip;
cip = ⁣
ip = (int *)cip;
*ip = 5;
printf("const int ic = %d *cip = %d *ip = %d\n", ic, *cip, *ip);
printf("&ic = %p cip = %p ip = %p\n", &ic, cip, ip);
gcip = &gic;
gip = (int *)gcip;
#if 0
*gip = 5;
printf("global const int gic = %d *gcip = %d *gip = %d\n",
gic, *gcip, *gip);
printf("&gic = %p gcip = %p gip = %p\n", &gic, gcip, gip);
#endif
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~ output ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ const_ints
const int ic = 0 *cip = 5 *ip = 5
&ic = 0xbfbd72a0 cip = 0xbfbd72a0 ip = 0xbfbd72a0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The global variable code would segfault, as I expected. But the
auto variable code gives this illogical result. I would appreciate
comments. I am not on this list, so please ensure I am cc'd with
any responses. I'll be happy to file a bug, if it is a bug.
Thanks,
Karen
--
Karen Shaeffer
Neuralscape, Palo Alto, Ca. 94306
[EMAIL PROTECTED] http://www.neuralscape.com