它和对象宏定义上的区别在于宏名称之后不带括号....#define mul(x,y) (x)*(y)
sizeof mul(1,2.0) 将被扩展为 sizeof 1 * 2.0
调用函数宏时候, 传递给它的参数可以是函数的返回值...代表可变参数列表, 如果它不是仅有的参数, 那么它只能出现在参数列表的最后....#if 0
{
一大段代码;
}
#endif
常量表达式可以是包含宏, 算术运算, 逻辑运算等等的合法C常量表达式, 如果常量表达式为一个未定义的宏, 那么它的值被视为0....我用gcc, 如果不指定-std=c99, 其他情况都给出__STDC_VERSION__未定义的错误信息, 咋回事呢?