用宏定义方法,传进来的参数可以是任何类型,在写宏时是不用声明是什么类型的参数,宏方法是在编译时编译进调用方法位置的,所以它可以使用调用它的函数中的所有变量,比如,你传进来两个结构体变量指针,在宏中,你可以不用再头文件中定义结构体,也可以调用结构体中的变量。还有一些宏声明的语法规则:不能加;号,中间不能有空格,“##”是记号粘连符号,#@将宏参数进行字符串字面量化,并且加‘’。#define B(x) #@x  为 B(1)------> '1'。#和@#一样只是加的是“”。

多行定义

#define MAX(X,Y) do { \
语句1; \
语句2; \
/* 注释的写法 */ \
} while(0) /* (no trailing ; ) */ \
 
 
每次换行都要加“\”,取消宏用#under 标识符