//预处理程序的工作类似文本替换,一般全大写,可以嵌套
//可以替换运算。一定不要分号结束。太长的时候用 \加回车来写多行
//可以带参数.简单的展开不会考虑运算顺序,因此应该多加括号,避免错误
#define PI 3.141592654
#define TWO_PI 2.0 * PI
#define IS_LEAP_YEAR year %4 == 0 && year % 100 !=0 \
|| year %400 ==0
#define IS_LEAP_YEARN(year) year %4 == 0 && year % 100 !=0 \
|| year %400 ==0
#define SQUARE(x) x*x
//带入x=v+1 时相当于 v+1*v+1
#define SQUARE(x) ((x)*(x))
//每个自变量都需要用括号括起来,整个表达式也要括起来
#define MAX(a,b) ((a)>(b) ? (a) :(b))
测试例子:MAX(x,y) *100
max(x&y,z);
#ifdef IPAD
#define image @"ipad.png"
#else
#define image @"iphone.png"
#endif
//可以替换运算。一定不要分号结束。太长的时候用 \加回车来写多行
//可以带参数.简单的展开不会考虑运算顺序,因此应该多加括号,避免错误
#define PI 3.141592654
#define TWO_PI 2.0 * PI
#define IS_LEAP_YEAR year %4 == 0 && year % 100 !=0 \
|| year %400 ==0
#define IS_LEAP_YEARN(year) year %4 == 0 && year % 100 !=0 \
|| year %400 ==0
#define SQUARE(x) x*x
//带入x=v+1 时相当于 v+1*v+1
#define SQUARE(x) ((x)*(x))
//每个自变量都需要用括号括起来,整个表达式也要括起来
#define MAX(a,b) ((a)>(b) ? (a) :(b))
测试例子:MAX(x,y) *100
max(x&y,z);
#ifdef IPAD
#define image @"ipad.png"
#else
#define image @"iphone.png"
#endif