typedef用在一个正常的变量声明语句的前面,表示所声明的变量不是一个变量而是一个类型.在写法上,任何合法的变量声明语句前面都可以加一个typedef使之变成一个类型声明.而#define只是简单的宏替换,没有类型声明的意思.二者只是在某些极端情况下从语义上等价.
下面两种在语法效果上可以理解为等价的:
typedef int x;
#define x int;
但是#define在工作机制上显得太死板.看下面这些类型声明:
typedef int x[10]; //把x定义为一个int数据类型,其长度为10.但是用#define怎么实现??
typedef int (*ptr_to_fun)(int **, char **);// 定义了一个类型ptr_to_fun,它是一个指向函数的指针,该函数有两个参数,int类型的指针的指针,char类型的指针的指针,且返回值为int类型.
下面两种在语法效果上可以理解为等价的:
typedef int x;
#define x int;
但是#define在工作机制上显得太死板.看下面这些类型声明:
typedef int x[10]; //把x定义为一个int数据类型,其长度为10.但是用#define怎么实现??
typedef int (*ptr_to_fun)(int **, char **);// 定义了一个类型ptr_to_fun,它是一个指向函数的指针,该函数有两个参数,int类型的指针的指针,char类型的指针的指针,且返回值为int类型.