[EMAIL PROTECTED] wrote:
With following code: [CODE] struct B { int c; int d; };#define X(a, b, c) \ do\ {\ if (a)\ printf("%d, %d\n", b.c, c);\ else\ printf("%d\n", c);\ }while(0); [/CODE] Why int d = 24; X(1, b, d); can be compiled successfully but X(1, b, 24); not. I cannot find any description about this behavior in C standard.
Well, with the X(1, b, 24) case, the b.c in the first printf line becomes b.24, which is obviously a syntax error.
This sort of thing would be a fair bit easier to track down if you quoted the error message rather than just saying that it cannot be compiled successfully.
- Brooks
