LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3174|回复: 5

关于 C++ 语言中 typedef 的语法

[复制链接]
发表于 2004-4-16 14:24:17 | 显示全部楼层 |阅读模式
我在一本 C++ 语言的教程中看到了 typedef 是这么用的:
typedef int(* SIG)(); //声明返回类型且无参函数的指针类型 SIG
typedef void(* SIGARG)(); //声明无返回类型且无参函数的指针类型 SIGARG
SIG signal(int,SIGARG); //声明返回函数指针的函数。
很厚的一本介绍 C++ 的书,只用了几句话介绍了 typedef 的用法,诸如 typedef int INT 之类的,惜墨如金。但是在后来在介绍指向函数的指针的时候就出现了前述的三个语句。我想知道为什么要这么写呢。看不出来其中有没有和 "typedef int INT" 这样的语句中的 "int" 和 "INT" 对应的部分。感觉怪怪的。
发表于 2004-4-16 19:49:59 | 显示全部楼层
是这样的,typedef int(* SIG)();表示定义一个返回值为int型的函数指针SIG。也就是说SIG相当于int (*)()类型。
发表于 2004-4-19 13:31:58 | 显示全部楼层
学习
 楼主| 发表于 2004-4-19 20:12:44 | 显示全部楼层
typedef int(* SIG)(); //声明返回类型且无参函数的指针类型 SIG
typedef void(* SIGARG)(); //声明无返回类型且无参函数的指针类型 SIGARG
SIG signal(int,SIGARG); //声明返回函数指针的函数。
------------------------------
我查了一下书,关于 typedef 的用法是这样的:
1. 先按定义变量的方法写出定义体(如 int i;)
2. 将变量名换成新类型名(如将 i 换成 COUNT)
3. 最前面加上 typedef (如 typedef int COUNT)
4. 现在可以用新的类型名去定义变量了。
--------------------------------
看起来似乎有些麻烦。不过照着它的方法做确实得到了上述晦涩难懂的三个语句了,终于知道为什么要这么写了。以前 typedef int INT 的时候确实是是糊里糊涂的过着日子的。
发表于 2004-4-20 21:05:59 | 显示全部楼层
声明回调函数和结构时很好用,可读性强!
发表于 2004-4-23 21:05:13 | 显示全部楼层
习惯成自然啦~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表