This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

A question about macro replacement


Hi, all,

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.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]