用typedef来定义与平台无关的类型。
比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:
typedef long double REAL;
在不支持 long double 的平台二上,改为:
typedef double REAL;
在连 double 都不支持的平台三上,改为:
typedef float REAL;
也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
标准库就广泛使用了这个技巧,比如size_t。
另外,因为typedef是定义了一种类型的新别名,不是简单的字符串替换,所以它比宏来得稳健(虽然用宏有时也可以完成以上的用途)。
int (*func)(int *p);
首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明(*func)是一个函数,所以func是一个指向这类函数的指针,即函数指针,这类函数具有int*类型的形参,返回值类型是int。
int (*func[5])(int *);
func右边是一个[]运算符,说明func是具有5个元素的数组;func的左边有一个*,说明func的元素是指针(注意这里的*不是修饰func,而是修饰func[5]的,原因是[]运算符优先级比*高,func先跟[]结合)。跳出这个括号,看右边,又遇到圆括号,说明func数组的元素是函数类型的指针,它指向的函数具有int*类型的形参,返回值类型为int。
http://www.cnblogs.com/charley_yang/archive/2010/12/15/1907384.html
分享到:
相关推荐
typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 ypedef 声明有助于创建平台无关...
详细讲述了typedef的用法和高级应用 深入浅出 非常容易理解
typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化
c语言 typedef的用法详解 typedef 声明,简称typedef
#define是预处理指令 typedef是在编译时处理的 typedef与#define的区别
关于typedef的用法小结,能够帮助你更好的了解typedef及其用法。非常好!
介绍#define和typedef的区别于使用
Typedef用法小结
关于typedef的用法总结,和宏定义Define的一些区别
struct typedef struct 区别
有助于深入理解typedef的使用,详细讲述了typedef的几种使用方法。
typedef与define的用法,说明typedef和define的区别及各自的特殊用法
于C++中函数指针的使用(包含对typedef用法的讨论)
主要讲述c/c++中struct和typedef struct的区别以及各种用法
个人整理收集的关于typedef用法的小结
详解typedef四用途与两陷阱 typedef语法 声明一个别名 区别于#define思维与用法 详细解析了typedef的四个重要用途与两个误区
专业分析文档,详细的描述了c语言中typedef的用法,请同志们鉴别
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。下面就一起来看看
typedef四个用途和两个陷阱、用法及与define的区别