[EMAIL PROTECTED] writes:

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

There is nothing in the C standard that requires that (char*)(&b-1) == &a.
They are distinct objects, thus not comparable, and &b-1 by itself is
already invalid.

Andreas.

-- 
Andreas Schwab, SuSE Labs, [EMAIL PROTECTED]
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Reply via email to