c语言宏定义时要注意以下八点:
1、预处理器直接对宏进行文本替换
    2、宏使用时的参数不会进行求值和运算
    3、预处理器不会对宏定义进行语法检查,宏定义时出现的语法错误只能被编译器检测
    4、宏定义的效率高于函数调用(宏不占用内存,函数占用内存)
    5、宏的使用会带来一定的副作用
    6、#define定义的宏可以出现在程序的任意位置,#define定义之后的代码都可以使用这个宏
    7、#define 表达式的使用类似函数调用,但是宏比函数功能更强大,比函数更容易出错
    8、宏表达式中不能出现递归定义二、代码测试(ubuntu 10  gcc平台)