财讯中国

typedef用法 与#define

来源:网络 2022-02-01 15:00:23
typedef用法 与#define

typedef根据名字就知道是对类的定义。但是值得注意的是,它并不定义新的类型,而是对已有的类型定义一个其他的名字。本人生就略愚,常常搞不清与#define的关系,难道仅仅是所定义得到的新类型所在的位置不同吗?首先我们仔细看看typedef。

一、typedef的用法

人说typedef的使用可以编写更加美观和可读的代码,原因是typedef可以隐藏笨拙的语法结构以及平台相关的数据类型,从而增加可移植性及未来的可维护性。对于typedef的用法,一般如下:原始类型一般紧紧临着typedef,最右边是声明的新的类型名字(其实就是原始类型的一种表示)。例如 typedef int INT;这里声明了一个与int同意的类型INT。如此以来int a;与INT a;并没什么本质的区别。

typedef还可以掩盖复合类型,例如指针、数组、函数指针。例如,定义char value1[80], value2[80];可以优化一下:typedef char LINE[80]; LINE value1,value2;指针定义:typedef (int*) PINTINT szA,szB;等同与int* szA,*szB.对函数指针定义如:typedef void (*FUNC)(int,int); FUNC pFun1,pFun2;等价于void (*pFun1)(int ,int); void (*pFun2)(int ,int).

typedef可以定义变相机器无关性代码,例如三台机器对浮点类型的支持分别是long double,double,float。这是为了代码的统一,可以对三种机器分别如下定义:typedef long double REAL; typedef double REAL; typedef float REAL。这样,虽然代码中使用了浮点类型REAL,但并不会给不同类性的机器代理不兼容的问题。 typedef可以增强程序的可读性,以及标识符的灵活性,但是它也有“非直观性”等缺点。

二、#define的用法

#define为一个宏定义语句,通常它用来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善,背后一长串”的宏(很是形象)。它本身并不在编译过程中进行,而是在着之前(预处理过程)就完成了,但因此难以发现潜在的错误及其他代码维护问题。它的实例像:

#define INT int#define TRUE 1#define Add(a,b) ((a)+(b));#define Loop_10 for (int i=0; i<10; i++)

在Scott Meyer的Effective C++一书的条款1中有关于#define语句弊端的分析,以及好的替代方法,大家可参看。

三、typedef与#define的区别

从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。有时很容易搞不清楚与typedef两者到底该用哪个好,如#define INT int这样的语句,用typedef一样可以完成,用哪个好呢?我主张用typedef,因为在早期的许多C编译器中这条语句是非法的,只是现今的编译器又做了扩充。为了尽可能地兼容,一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗长的类型的别名。

宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。请看上面第一大点代码的第三行:

typedef (int*) pINT;以及下面这行:#define pINT2 int*

效果相同?实则不同!实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b;

表示定义了一个整型指针变量a和整型变量b。

注意:两者还有一个行尾;号的区别!

关键词: typedefdefin

相关新闻

typedef用法 与#define
2022-02-01 15:00:23
锂电池之父吉野彰:重新定义未来
2022-02-01 15:00:18
rake接收机的工作原理
2022-02-01 15:00:13
蜂鸣器常见错误电路分析
2022-02-01 15:00:07
液晶显示器偏光膜的基本原理
2022-02-01 15:00:02
12代酷睿上市 Intel处理器越来越贵了:均价上涨超10%
2022-02-01 13:51:16
芝奇发布DDR5-6400 32GB高频大内存:时序喜人
2022-02-01 13:51:09
第三大CPU架构RISC-V崛起了:单厂商年出货超30亿
2022-02-01 13:51:03
Win 11虎年首次更新:安卓应用OK了!
2022-02-01 13:38:33
12代i7+RTX 3060电脑只要7499 拆卖零件都值
2022-02-01 13:38:26
技嘉1Tb SSD只要639 漏洞价快捡!
2022-02-01 13:38:19
1Tb固态硬盘只478元 余量不多 手慢无
2022-02-01 13:38:11
1Tb只要112元 硬盘硬盘虎年首降!
2022-02-01 13:38:03
光伏并网逆变器原理
2022-02-01 13:30:25
令人如痴如醉的10W电子管功放
2022-02-01 13:30:20
思特威发布两款3MP图像传感器,开启网络摄像机“全高清Pro时代”
2022-02-01 13:30:15
色温及如何选择色温图文详解
2022-02-01 13:30:10
电流表原理和如何避免测量误差(一)
2022-02-01 13:30:04
特斯拉线圈的制作方法及原理介绍
2022-02-01 13:29:59
Apple Watch推出2022春节挑战:20分钟锻炼可得“虎头”奖章
2022-02-01 12:08:42
vivo千元新机现身,定位入门级5G市场
2022-02-01 12:08:35
OPPO 160W快充头入网,新机已经在路上
2022-02-01 12:08:28
曝iOS 15.4可在iPhone中直接刷卡支付
2022-02-01 12:08:20
中国区大受欢迎:苹果MacBook新品卖爆
2022-02-01 12:08:12
性能提升多达15%:AMD工程师优化Linux内核
2022-02-01 12:08:04
声控开关原理
2022-02-01 12:00:25
Windows Embedded Standard 7 ICE的作用
2022-02-01 12:00:20
联想Y480笔记本拆机详细图文教程
2022-02-01 12:00:14
从定时器开始说中断
2022-02-01 12:00:09
DIY无线电测向信号源
2022-02-01 12:00:04
替代GT 730!丽台GT 1010“亮机卡”曝光 双HDMI接口
2022-02-01 10:38:02
BOSCH第九代ESP控制系统简介
2022-02-01 10:30:20
带阻滤波器电路图
2022-02-01 10:30:15
网络分析的基本原理
2022-02-01 10:30:09
74hc164驱动数码管程序
2022-02-01 10:30:04
升压电路原理
2022-02-01 10:29:59
Windows 11二月体验包:新增麦克风静音按钮 可运行Android应用
2022-02-01 09:21:26
VGChartz预估任天堂Switch总销量已超索尼初代PlayStation
2022-02-01 09:21:20
微软:Windows 11推广部署工作已进入尾声
2022-02-01 09:21:14
iOS功能更新预告 或允许iPhone直接通过NFC接受刷卡支付
2022-02-01 09:21:08
Francisco Partners 收购 IBM医疗数据和分析资产
2022-02-01 09:21:03
"2035年实现新型工业化目标",指的是什么?
2022-02-01 09:00:15
电气原理图符号大全
2022-02-01 09:00:09
漏洞扫描原理及程序简介
2022-02-01 09:00:04
MOS管工作原理,就是这么简单
2022-02-01 08:59:59
1599元!ROG STRIX B660I Gaming主板已上架
2022-02-01 07:39:39
【手慢无】媲美百元产品 39.9元就能买的电动牙刷
2022-02-01 07:39:33
免费看3分钟后要掏钱!微信上线首个付费直播间:不许截屏
2022-02-01 07:39:27
Kao Chimigraf墨水公司积极开拓印度市场
2022-02-01 07:39:20
RTX 30系显卡建议零售价大涨 幅度在5~6%不等
2022-02-01 07:39:14
Inca单程包装数码印刷机SpeedSet 1060
2022-02-01 07:39:07
还没升级win11的抓紧了!微软win11免费升级或将结束
2022-02-01 07:39:01
俄罗斯全国数码印花机安装机型大扫描
2022-02-01 07:38:55
游戏变电影?《光环》真人剧集即将来袭
2022-02-01 07:38:49
VMware携手安徽医科大学第二附属医院建设双活数据中心
2022-02-01 07:38:43
又一科技公司计划上市!品胜电子A股辅导备案已完成
2022-02-01 07:38:36
富士将推出 LP350 数字UV喷墨标签印刷机
2022-02-01 07:38:30
Epic将在2022年继续赠送免费游戏
2022-02-01 07:38:24
春节长假为电脑升级 台电固态硬盘超级秒杀99块9
2022-02-01 07:38:17
用30多年前的Game Boy掌机玩《GTA5》
2022-02-01 07:38:10
一代国产神车五菱宏光加入《极限竞速:地平线5》
2022-02-01 07:38:03
万用表的使用方法--很全的哦~~~
2022-02-01 07:30:23
施密特正交化法公式
2022-02-01 07:30:18
上广电SVA试水小尺寸屏幕 酝酿重大转型
2022-02-01 07:30:13
西门子PLC计数器指令编程
2022-02-01 07:30:08
激光扩束镜(准直镜)
2022-02-01 07:30:02
7499元 神舟战神 Z8-DA7NP游戏本将开卖
2022-02-01 06:09:11
PC Gamer致信Intel:显卡危机救星
2022-02-01 06:09:04
《微软飞行模拟》今年内将支持DLSS
2022-02-01 06:08:57
蓝色星球墨水公司的新型自擦除喷墨墨水
2022-02-01 06:08:49
苹果警告用户安装macOS 12.3测试版
2022-02-01 06:08:42
喷墨打印机市场到2030年将达到625亿美元
2022-02-01 06:08:35
贴纸和标签有什么不同
2022-02-01 06:08:28
罗永浩成被告!本人及交个朋友公司因产品纠纷被起诉
2022-02-01 06:08:20
改变行业的游戏本升级了!双显三模、140W满血
2022-02-01 06:08:13
两周创造新纪录!Steam超2900万人同时在线
2022-02-01 06:08:05
再次领跑物联网生态品牌,改变却不止海尔
2022-02-01 06:00:16
多媒体电教室的管理与设备的维护
2022-02-01 06:00:11
可编程控制器原理
2022-02-01 06:00:05
机器学习:亟须纠正的4大类“偏差”
2022-02-01 06:00:00
大神恶作剧删除Linux源代码:它很烂 推荐使用WinXP系统
2022-01-31 22:51:15
外媒:苹果将允许iPhone直接使用NFC接受信用卡付款
2022-01-31 22:51:09
多位开发者反馈苹果已修复iCloud同步故障
2022-01-31 22:51:03
碳化硅(SiC)功率器件或在电动汽车领域一决胜负
2022-01-31 22:30:21
英特尔杨叙:全新超极本是PC与平板二合一
2022-01-31 22:30:16
脉冲式电子围栏工作原理及优点分析
2022-01-31 22:30:10
发动机测试的便携式振动分析仪
2022-01-31 22:30:05
城市治安网络视频监控系统解决方案解析
2022-01-31 22:30:00
厦门市澳益国际贸易有限公司&福建片仔癀保健食品有限公司匠心前行,共创健康市场!
厦门市澳益国际贸易有限公司&福建片仔癀保健食品有限公司匠心前行,共创健康市场!
2022-01-31 21:55:14
【手慢无】1669元起 Redmi Note 10 Pro 5G迎来促销啦
2022-01-31 21:08:02
均速管流量计--简便、价廉、节能的流量仪表
2022-01-31 21:00:19
苹果小白的逆袭 iPhone5耳机暴力拆解
2022-01-31 21:00:13
3G智能手机视频监控
2022-01-31 21:00:08
涡街流量计测量的测量范围
2022-01-31 21:00:03
苹果发布watchOS 8.4更新 包含错误修复和安全更新
2022-01-31 19:51:26
苹果发布iOS 15.3和iPadOS15.3 修复Safari泄露浏览记录的漏洞
2022-01-31 19:51:20
Windows 11将在下月获得Android Apps支持、任务栏改进以及更多
2022-01-31 19:51:14
苹果发布macOS Monterey 12.2 重构Apple Music及一些小规模更新
2022-01-31 19:51:08
Valve宣布Steam Deck将于2月25日开始销售 每周定期补货
2022-01-31 19:51:02
联想拯救者135W PD充电器即将发布
2022-01-31 19:38:32

热门文章

热点专题