c++中typedef

今天在学习sizeof的时候偶遇typedef这个关键字,抱着不弄明白不死心的心态,在网上搜了些资料,加上自己的理解写下这篇typedef,权当自己用来见证自己进步和备忘的。

typedef 照我理解就是取别名。

取别名一:

typedef char * SChar;

这里给char * 类型的指针重新取了哥SChar的别名,则在以后的代码中要定义Char * 就可以这样写 SChar 如:

char * a 等价于 SChar a;

为结构体取别名:

typedef struct test1

{

  char a;

}Test;

则 Test代表了 Struct test1,

Test a 等价于 struct test1 a;

取别名三,通过取别名实现平台兼容性

例如:

比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:

typedef long double REAL;

在不支持 long double 的平台二上,改为:

typedef double REAL;

在连 double 都不支持的平台三上,改为:

typedef float REAL;

也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。

取别名四:为复杂函数指针或者类型取一个语义简单明了的别名。

如:定义函数指针时可以这样定义: int (*fn1)(int *p);如果这样写就是定义了一个名字为fn1的指向一个返回类型为int,参数类型为int指针的函数指针,如果接下来还要定义一个类似的函数指针还得这样写int (*fn2)(int *p),这样写可读性和修改性不是很强。如果我们用typedef 就解决了以上问题。

typedef int (* pFn)(int *p);

pFn fn1;

pFn fn2;

以上等价于上面的定义了两个函数指针。显然这样写代码的可读性明显提高了很多,同时,如果pFn指针的类型变了的话也只要修改typedef处代码即可。

原文链接: https://www.cnblogs.com/quandeboke/archive/2013/04/03/2998784.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++中typedef

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/83144

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午8:56
下一篇 2023年2月9日 下午8:56

相关推荐