OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 39697|回复: 198

【每日一题:0827签到】C语言中的define 与 typedef,该用哪一个呢? 大家不妨来试试!

  [复制链接]

23

主题

90

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2018-8-12
在线时间
100 小时
发表于 2020-8-27 09:05:57 | 显示全部楼层 |阅读模式
本帖最后由 JUSTDY 于 2020-8-27 09:20 编辑

题目目的:

Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。

思考一下:
7a179e63398951c56982edd8e4908d7c_4.gif
  1. #define dPS struct s *

  2. typedef struct s * tPS;
复制代码

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?

答案和解释:请回复后查看
游客,如果您要查看本帖隐藏内容请回复


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2020-5-23
在线时间
19 小时
发表于 2020-8-27 09:24:40 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

800

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3773
金钱
3773
注册时间
2017-3-7
在线时间
1644 小时
发表于 2020-8-27 09:45:48 | 显示全部楼层
一般建议少用#define
回复 支持 反对

使用道具 举报

28

主题

306

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
1320
金钱
1320
注册时间
2012-6-3
在线时间
353 小时
发表于 2020-8-27 10:10:19 | 显示全部楼层
这两个有区别啊,不能混为一团
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2019-6-7
在线时间
54 小时
发表于 2020-8-27 10:42:28 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

4

主题

55

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2019-5-14
在线时间
231 小时
发表于 2020-8-27 11:09:41 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

0

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2018-4-20
在线时间
478 小时
发表于 2020-8-27 11:30:00 | 显示全部楼层
感觉是 typedef
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-4-15
在线时间
18 小时
发表于 2020-8-27 12:38:26 | 显示全部楼层
来看看答案怎么说
回复 支持 反对

使用道具 举报

9

主题

218

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1364
金钱
1364
注册时间
2020-5-12
在线时间
381 小时
发表于 2020-8-27 14:13:03 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-7-21
在线时间
18 小时
发表于 2020-8-27 17:12:13 | 显示全部楼层
学习学习学习
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2019-7-3
在线时间
29 小时
发表于 2020-8-27 17:12:31 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-8-23
在线时间
11 小时
发表于 2020-8-27 23:54:30 | 显示全部楼层
我觉得宏定义好点
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-4-6
在线时间
15 小时
发表于 2020-8-28 06:16:13 来自手机 | 显示全部楼层
typedefine
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-12-17
在线时间
9 小时
发表于 2020-8-28 11:44:31 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

2

主题

39

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2205
金钱
2205
注册时间
2016-5-10
在线时间
543 小时
发表于 2020-8-28 13:29:13 | 显示全部楼层
1111111111111111
回复 支持 反对

使用道具 举报

16

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
830
金钱
830
注册时间
2020-7-1
在线时间
110 小时
发表于 2020-8-28 13:47:34 | 显示全部楼层
typedef struct
回复 支持 反对

使用道具 举报

27

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2016-8-31
在线时间
252 小时
发表于 2020-8-28 14:34:51 | 显示全部楼层
typedef好,define只是简单替换可能有歧义
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-11-13
在线时间
25 小时
发表于 2020-8-28 15:12:20 | 显示全部楼层
初学者,看下
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2020-7-25
在线时间
9 小时
发表于 2020-8-28 17:06:34 | 显示全部楼层
typedef struct
回复 支持 反对

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1050
金钱
1050
注册时间
2020-5-11
在线时间
252 小时
发表于 2020-8-28 17:08:28 | 显示全部楼层
a5820736 发表于 2020-8-27 09:45
一般建议少用#define

大佬 为啥少用#define可以给个解释不。学习一下
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2019-5-23
在线时间
143 小时
发表于 2020-8-28 18:08:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

33

主题

982

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7862
金钱
7862
注册时间
2014-8-13
在线时间
1584 小时
发表于 2020-8-28 18:29:42 | 显示全部楼层
直接从MS代码中抄来的固定格式(如下),这么些年一直这么用,也没详细探究过,既然人家这么用,那应该还是不错的

typedef struct _AAABBB {
//contents here
} AAABBB, *PAAABBB;
回复 支持 反对

使用道具 举报

33

主题

982

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7862
金钱
7862
注册时间
2014-8-13
在线时间
1584 小时
发表于 2020-8-28 18:35:27 | 显示全部楼层
还有,解释的地方是有些小出入的,我们要求#define这里,如果间隔多于1个,或者关键词多于2个,必须用括号组合起来,使其间隔只有1个,组合后的结构是2个,比如#define a b ,或者 #define (a b) c,不能出现类似#define a b c这样的写法。所以,在我们这里,解释里的p1 和p2不是同一个类型的东西这种事情不会出现
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2020-8-6
在线时间
6 小时
发表于 2020-8-29 08:34:29 | 显示全部楼层
回复查看答案
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2019-5-25
在线时间
12 小时
发表于 2020-8-29 22:30:10 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2020-6-24
在线时间
7 小时
发表于 2020-8-29 22:31:25 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

17

主题

97

帖子

0

精华

高级会员

Rank: 4

积分
822
金钱
822
注册时间
2020-7-21
在线时间
85 小时
发表于 2020-8-30 10:06:10 | 显示全部楼层
typedef 定义的结构体可以反复使用
回复 支持 反对

使用道具 举报

5

主题

129

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2020-5-8
在线时间
66 小时
发表于 2020-8-30 16:29:28 | 显示全部楼层
typedef struct s * tPS;
回复 支持 反对

使用道具 举报

1

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2019-7-18
在线时间
100 小时
发表于 2020-8-30 19:39:40 | 显示全部楼层
还真不知道
回复 支持 反对

使用道具 举报

18

主题

89

帖子

0

精华

高级会员

Rank: 4

积分
798
金钱
798
注册时间
2016-5-12
在线时间
172 小时
发表于 2020-8-31 09:21:35 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2019-10-22
在线时间
26 小时
发表于 2020-8-31 09:50:25 | 显示全部楼层
111111111111
回复 支持 反对

使用道具 举报

0

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2020-5-31
在线时间
66 小时
发表于 2020-9-1 11:35:51 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

53

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5921
金钱
5921
注册时间
2017-7-18
在线时间
353 小时
发表于 2020-9-1 13:36:15 | 显示全部楼层
看大佬们怎么说
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2020-8-4
在线时间
15 小时
发表于 2020-9-1 14:48:39 | 显示全部楼层
typedef更好呀,define的作用只是单独的替代字符,typedef重定义一种类型
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-12-25
在线时间
4 小时
发表于 2020-9-2 16:15:07 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2020-4-15
在线时间
8 小时
发表于 2020-9-2 17:17:56 | 显示全部楼层
typedef更好
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2020-3-20
在线时间
16 小时
发表于 2020-9-6 10:36:35 | 显示全部楼层
宏定义
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-9-4
在线时间
2 小时
发表于 2020-9-7 15:33:44 | 显示全部楼层
学习学习,谢谢
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2019-11-29
在线时间
28 小时
发表于 2020-9-7 18:27:48 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2019-4-16
在线时间
41 小时
发表于 2020-9-7 19:25:41 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-9-2
在线时间
6 小时
发表于 2020-9-7 20:57:45 | 显示全部楼层
来学习了
回复 支持 反对

使用道具 举报

9

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
700
金钱
700
注册时间
2020-5-11
在线时间
67 小时
发表于 2020-9-7 22:22:18 | 显示全部楼层
define
回复 支持 反对

使用道具 举报

55

主题

243

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1596
金钱
1596
注册时间
2012-12-30
在线时间
240 小时
发表于 2020-9-8 09:12:50 | 显示全部楼层
看答案来的。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-8-17
在线时间
19 小时
发表于 2020-9-8 09:50:05 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2019-9-1
在线时间
194 小时
发表于 2020-9-8 10:16:39 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2019-7-19
在线时间
28 小时
发表于 2020-9-9 10:45:14 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2016-5-26
在线时间
14 小时
发表于 2020-9-9 11:06:32 | 显示全部楼层
xuexi                                                                       
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-7-29
在线时间
8 小时
发表于 2020-9-9 11:09:05 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2017-10-10
在线时间
130 小时
发表于 2020-9-9 14:18:10 | 显示全部楼层
感觉是 typedef ,宏定义只是简单的字符串替换,typedef是类型定义
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2019-9-14
在线时间
18 小时
发表于 2020-9-9 14:47:36 | 显示全部楼层
typedef
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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