OK, the C standard does not say that this should work, so you
can consider this bug closed.

However, given knowledge of the calling convention of a
particular machine, you can do neat things such as dynamic
function binding. See www.drizzle.com/~scottb/gdc/fubi-paper.htm
for instance.

I've since changed to using assembly, but why does gcc
return the address of a temp when 'a' is a char and not
when 'a' is an int?

Surprised, not unhappy,
Stephen.

---
Stephen Kennedy <[EMAIL PROTECTED]>
t: +353 1 6693679   f: +353 1 6767094
Game Developer Frontline Award Winner
http://www.havok.com/news/release.html

> >     In the example below, '&a' is the address of a local 
> copy of 'a' not of 'a'.
> >     if the type of 'a' is changed to int, it works as expected.
> 
> Works as who expected?  Where is the bug?  Please quote which part of
> the C standard is violated.  You got an address, why are you unhappy?
> 
> Neil.
> 
> > #define TA char
> > #define TB int
> > #define TC int
> > 
> > void foobar(TA a, TB b, TC c);
> > 
> > int main()
> > {
> >     foobar(1,2,3);
> >     return 0;
> > }
> > 
> > void foobar(TA a, TB b, TC c)
> > {
> >     printf("a == %i  claims %x\n", a, &a);
> >     printf("a == %i  really %x\n", (&b)[-1], (&b)-1);
> >     printf("b == %i  %x\n", b, &b);
> >     printf("c == %i  %x\n", c, &c);
> > }
> 


Reply via email to