typedef用法[转帖]

typedef用法
   typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。

typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如:

typedef int size;

  此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size.

typedef 还可以掩饰符合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组:

char line[81];
char text[81];

定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样:

typedef char Line[81];
Line text, secondline;

typedef 有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以i获得最高的精度:

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<char, char_traits<char>,allocator<char>> 和 basic_ofstream<char, char_traits<char>>。

注1:注意typedef与define的区别

typdef kkk int *
kkk a,b

则a,b类型相同

define kkk int *
kkk a,b

则a,b类型不同
注2:

typedef int (*mac_listen_func)(int*,char*);
mac_listen_func mlf1,mlf2;

等价定义:

int (*mlf1)(int*,char*);
int (*mlf1)(int*,char*);

上面的方式使用比较方便,可读性也比较好。

转载于:https://www.cnblogs.com/inspurhaitian/archive/2008/09/08/1286951.html

typedef用法(二)相关推荐

  1. typedef用法小结

    Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法.不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮 ...

  2. 关于C++中函数指针的使用(包含对typedef用法的讨论)

    关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(in ...

  3. typedef用法(1)

    Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法.不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮 ...

  4. typedef 用法详解

    第一部分 基本概念 1.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程 ...

  5. 最重要的事情 一 、消息通信机制(1)ant 打包方法(2) system.out.println()用法 二、UML学习

    最重要的事情    一 .消息通信机制(1)ant 打包方法(2) system.out.println()用法      二.UML学习

  6. 【Linux命令】ip addr、ip link、ifconfig 用法 二

    文章目录 1. 前言 2. ip link 2.1 ip link add 2.1.1 命令实例 2.2 ip link set 2.3 ip link show 2.4 ip link delete ...

  7. C和C++中struct的typedef用法建议

    C和C++中struct的typedef用法建议 参考文章(建议先读) 根据参考的文章,总结一下: 情况1 C语言中: typedef struct{ ···: }aaa; 则aaa是struct类的 ...

  8. Typedef用法(转载)

    在C的学习过程中,现在才发现,以前有那么多被忽略的重点:现在是慢慢拾起这些重点的时候,通过百度和博客,我感觉我学到了很多东西,自己只是在别人说的基础上,按照自己学习的过程在这里记录一下,以后有时间回过 ...

  9. Typedef用法学习

    不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...

  10. Typedef 用法总结

    http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较 ...

最新文章

  1. c++中的void指针和const指针
  2. linux虚拟化毕业设计,毕业设计(论文)-基于Linux的云校园桌面虚拟化系统的设计与实现(68页)-原创力文档...
  3. opencv中vc14和vc15的区别?
  4. Codeforces 474C Captain Marmot 给定4个点和各自旋转中心 问旋转成正方形的次数
  5. 关于脑机接口该如何实现的考虑
  6. java同时满足语句_关于控制语句,下列哪些说法符合《阿里巴巴Java开发手册》:...
  7. java 根据类名示例化类_Java LocalDateTime类| ofInstant()方法与示例
  8. 前端工程师:现在是最糟糕的时代,也是最好的时代
  9. Tomcat配置技巧Top 10
  10. Input禁用文本框
  11. java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解
  12. AutoCad窗口错误调整
  13. rufus(u盘引导盘制作工具) v3.5.1497
  14. 如何管理计算机回收站,回收站功能多多 教你如何玩转回收站
  15. 植物大战僵尸修改存档文件-C1认证
  16. java ar教程_JavaFX教程整理
  17. 计算机网络安全期末考试华南理工,华南理工软件学院2015期末考试-计算机网络B卷.doc...
  18. 在网页地图图片上加注企业和“圳品”数量信息+1
  19. httpclient 设置短连接_关于HTTP的长连接和短连接那些事
  20. 华为通用软件开发面试(一二+主管面)

热门文章

  1. python转cython_Cython的简单使用
  2. Kubernetes初识
  3. JAVA Httpclient3.x与Httpclient4.x代码对比(post方法)
  4. redis连接数据库进行操作
  5. c++ DLL-DEF-LIB
  6. 解析:百思买败于外部派系争斗
  7. docker限制容器日志大小
  8. MapReduce分布式编程框架
  9. iOS8新建一个新的空白工程
  10. 《设计师要懂心理学》-第九章-人会犯错