typedef和define具体的详细区别
#define是编译预处理指令,在编译预处理时换,不作正确性检查,不论是否正确只进行带入替换,只有在编译已被展开的源程序时才会发现可能的错误并报错。
2.typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。
两者的区别如例:
#define A int * tepedef int * A;(这是一条语句,要加分号)
两者的作用都是将A代表int *,但是#define在预处理时进行简单的替换,而typedef不是简单替换。
typedef定义的A相当于定义了一个指针指向了int *。而#define定义的A只是进行了替换。
扩展资料:
typedef 有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:
typedef long double REAL;
在不支持 long double 的机器上,该 typedef 看起来会是下面这样:
typedef double REAL;
并且,在连 double 都不支持的机器上,该 typedef 看起来会是这样:
typedef float REAL;
你不用对源代码做任何修改,便可以在每一种平台上编译这个使用 REAL 类型的应用程序。唯一要改的是 typedef 本身。在大多数情况下,甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗? 标准库广泛地使用 typedef 来创建这样的平台无关类型:size_t,ptrdiff
和 fpos_t 就是其中的例子。此外,象 std::string 和 std::ofstream 这样的 typedef
还隐藏了长长的,难以理解的模板特化语法,例如:basic_string,allocator> 和 basic_ofstream>。
参考资料:typedef-百度百科