广告

原创 C programming :Typedef

2009-5-19 22:07 1729 0 分类: 软件与OS
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*);


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

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
tecsun_9700dx 2010-09-03 16:00
大端(Big Endian)与小端(Little Endian)详解
 【大端(Big Endian)与小端(Little Endian)简介】Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。      对于...
tecsun_9700dx 2009-06-04 15:01
Linux Programming By Example 翻译---1
下载此文件不用限制啊 呵呵 这个附件是我翻译的前20页 也就是从目录到致谢 里面介绍了很多关于Linux编程的常识性问题 也是具有可读性和知识性的 希望大家看一看 谢谢 我会在尽快把下一次的翻译呈现给...
tecsun_9700dx 2009-06-02 09:23
Linux Programming By Example 的下载
 这里有英文原版的下载---一共15个分卷 本来我想给大家发一个地址 不过很多地址都不能下 我想还是分卷压缩后给大家上传吧 希望大家关注本书的翻译 并给鄙人提出意见和建议    ...
tecsun_9700dx 2009-05-26 20:17
Unix/Linux 's inode
一.inode size 定义单位:Byte inode table sample inode table是data area的索引表。Inode分为内存中的inode和文件系统中的inode,我们这...
tecsun_9700dx 2009-05-16 09:43
一本LINUX编程入门书--Linux Programming by Example
推荐 Linux Programming by Example --- the Fundamentals 这本书很是不错 它介绍了Linux编程的基本要素并且以一些命令的代码作为实例 进行讲解 并且编...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条