嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 2464|回复: 2

typedef和#define

[复制链接]

该用户从未签到

32

主题

81

帖子

771

积分

高级会员

Rank: 4

积分
771
发表于 2016-2-17 09:03:37 | 显示全部楼层 |阅读模式
一、比较
1、typedef和#define不同,不是简单的文本替换
2、typedef符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或文件内,主要是看这个变量定义的位置,而#define定义并没有这样的特点。
3、#define独有的特点:可以使用#ifdef,#ifndef,#undef
4、typedef可以简化复杂的变量声明
5、在C语言编程规范中提到使用#define定义时,如果定义中包含表达式,必须使用括号;而使用typedef就没有必要这样,举个例子:
#define f(x) 100-x
main()
{
int a=6,b=2,c;
c=f(a)*f(b);
printf("%d\n",c);
}
运算过程为100-x*100-x=100-6*100-2得出的结果和我们预期的完全不同
因此需要改为#define f(x) (100-x)
若用typedef 就不会有上面问题
回复

使用道具 举报

该用户从未签到

1

主题

50

帖子

222

积分

版主

Rank: 7Rank: 7Rank: 7

积分
222
发表于 2016-2-17 15:42:28 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
发表于 2016-2-19 08:51:56 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 现在注册

本版积分规则

QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

GMT+8, 2025-5-1 19:32 , Processed in 0.020724 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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