typedef的用法再思考

最近重读c语法,有所感悟,记录。

有时候感悟,其实就是猜,假想,作者创建语言的想法,通俗的讲就是丹尼斯灵魂附体了,这个时候任何c语言难点对于你来说,就像吃饭喝水一样简单了,同时还能发现它优美动人之处。

typedef的作用就是给类型创建一个别名。但类型分2种,1种是基础类型,1种是自定义类型。

1、基本类型的别名创建。

typedef    int    I32;  //为int创建别名I32
I32 a,b;     //等同与int a,b

 2、自定义类型。

typedef    int (*pFun)(int,int);

咦!!!,好像创建的语法和1不太一样了,为啥就不能统一了,想下面这样创建语法呢,让我少记点东西!!!

typedef int (*)(int,int)   pFun;

呵呵,这一刻如果你丹尼斯附体的话,他就会告诉你,这样做有一个致命的缺点!!!,因为,你不能确定pFun在左侧类型中的位置,看下面:

typedef   int (*pFun)(int,int);   //pFun是一个指针,指向一个函数。
typedef   int (*)pFun(int,int);   //pFun是一个函数,返回值是一个int型指针。

而你不能确定pFun的具体位置,所以这样做,不能给编译器一个准确的答案,所以,这样做不行。

但是大师就是大师,脑洞就是大,自定义类型,直接在左面加一个typedef,就把一个变量名,声明为一个自定义类型的别名了,既简单,又明了,你现在还怪设计者吗?

posted @ 2018-03-07 18:45  立体风  阅读(182)  评论(0编辑  收藏  举报