1、#define
作用:宏定义。通常用来定义常量。
处理阶段:在预编译过程中处理。# 是宏的意思。宏处理器不会对C/C++程序有任何的感知。它只处理宏的语法,做简单的文本替换。
例如:
#define INT int
#define TRUE 1
#define Add(a,b) ( (a) + (b))
#define Loop_10 for( int i = 0; i < 10; i ++)
2、typedef
作用:后跟数据类型或标识符。用来定义一个标识符或关键字的别名。
处理阶段:在编译过程处理。
例如:
typedef double wages;
typedef wages salary;
typedef int INT;
typedef (int *) pINT;
typedef可以定义类型的别名,但#define仅仅是简单的文本替换,能起到数据类型的作用,仅是因为替换的文本恰好是数据类型。看一个例子:
typedef (int *) pINT;
#define pINT2 int *;
pINT a, b;//相当于 int *a, *b; 也就是int* a; int*b;
pINT2 c, d;//相当于 int *a, b; 也就是int *a; int b;