Re: c/9762: Address of 'char' is incorrect.
stephen.kennedy@havok.com 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, schwab@suse.de
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 to: