[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

Reply via email to