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); > > } >