VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1048|回复: 8

帮我看看.好像没见过这样的定义

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-7 07:00:01 | 显示全部楼层 |阅读模式
#define XBYTE ((unsigned char volatile xdata *) 0)

这样的定义是什么意思..
回复

使用道具 举报

0

主题

41

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-5-24 13:30:01 | 显示全部楼层
unsigned char volatile xdata类型的指针,指针值是0;
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-5-24 18:00:01 | 显示全部楼层
就是定义了一个宏,它等价于空指针,只是指针被转化成指向unsigned char volatile xdata型的。
volatile跟const很像,都是限制符,含义正好相反,一个是不变的,一个是易变的(在程序中貌似不变的都可能变,多用于修饰多线程的共享变量,防止编译器误以为它不变而作某种优化)
回复

使用道具 举报

0

主题

37

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-5-25 13:30:01 | 显示全部楼层
((unsigned char volatile xdata *) 0)是一个unsigned char类型的空指针
volatile是提醒编译器不要对这个变量做存取优化,因为它可能被另一个线程修改。
回复

使用道具 举报

1

主题

39

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-5-28 20:00:01 | 显示全部楼层
定义一个指针. 名字是 xdata;
类型是: unsigned char volatile *
初始值是: 0
其中, volatile 表示编译器不优化该值.
回复

使用道具 举报

1

主题

39

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-6-20 12:00:02 | 显示全部楼层
哦.
xdata是什么?
哈哈
回复

使用道具 举报

2

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-6-26 14:15:01 | 显示全部楼层
没见过这种define, 好像后面那个0加上之后, 这个XBYTE就不好使用了.
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-6-28 10:30:01 | 显示全部楼层
定义一个指针. 名字是 xdata;
类型是: unsigned char volatile *
初始值是: 0
=============================================
没见过如此赋初值的,测试也没通过



其中, volatile 表示编译器不优化该值.
=============================================
注意当编译器不进行优化时,volatile可能不起作用,但是当开始优化代码时(当编译器开始寻找冗余的读入时),可以防止出现重大的错误。
(摘自《C++编程思想第一卷第2版》 P73)

LZ不妨把引用了这个宏的代码发出来看看
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-6-29 16:00:02 | 显示全部楼层
xdata指指向xdata区域的指针。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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