分类:
2009-05-12 16:57:00
#define FOO(x) { do_this(x); do_that(); }如下情况就会有错误,大括号外多了分号
if (x>y)#define FOO(x) do { do_this(x); do_that(); } while(0)
FOO(x);
else
FOO(y);
但,可以解决,写成
if (x>y)
FOO(x)
else
FOO(y)
不过很别扭,而且很容易混淆,忘记
如果这样定义
#define FOO(x) do_this(x); do_that();
那导致do_that();多出来造成语法错误
所以,这样定义