社区
C语言
帖子详情
结构体里的volatile是什么意思
slisent
2008-09-10 03:07:21
#pargma SBATA pw_timer
struct{
uchar volatile f_delay :1;
uchar dummy :7;
}pw_timer;
烦请问下,这里结构体里的volatile是什么意思?
这段程序,我是只想用到pw_timer里的一位,其它七位都不用.
请问,以上程序正确否?
...全文
475
8
打赏
收藏
结构体里的volatile是什么意思
#pargma SBATA pw_timer struct{ uchar volatilef_delay:1; uchardummy:7; }pw_timer; 烦请问下,这里结构体里的volatile是什么意思? 这段程序,我是只想用到pw_timer里的一位,其它七位都不用. 请问,以上程序正确否?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
slisent
2008-09-11
打赏
举报
回复
谢谢了
可我昨天怎么发重复了
真是不好意思呢
bitxinhai
2008-09-10
打赏
举报
回复
防止编译器进行优化f_delay !!!
保证每次都是从内存中读取
而不是到cache中去读取
hotonion
2008-09-10
打赏
举报
回复
[Quote=引用 1 楼 k2eats 的回复:]
相对于const,volatile是可变的
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。
你这样做语法上没有问题 但是寄存器不是以位为单位,你这样做起不到效果。可以这样试试:
#pargma SBATA pw_timer
struct{
uchar volatile f_d…
[/Quote]正解
backway
2008-09-10
打赏
举报
回复
[Quote=引用 1 楼 k2eats 的回复:]
相对于const,volatile是可变的
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。
你这样做语法上没有问题 但是寄存器不是以位为单位,你这样做起不到效果。可以这样试试:
#pargma SBATA pw_timer
struct{
uchar volatile f_d…
[/Quote]
正解!
hyyuanqiang
2008-09-10
打赏
举报
回复
[Quote=引用 1 楼 k2eats 的回复:]
相对于const,volatile是可变的
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。
你这样做语法上没有问题 但是寄存器不是以位为单位,你这样做起不到效果。可以这样试试:
#pargma SBATA pw_timer
struct{
uchar volatile…
[/Quote]
UP~k2eats
zclever
2008-09-10
打赏
举报
回复
楼主是在搞嵌入式的吧?
realdragon2
2008-09-10
打赏
举报
回复
UP~k2eats
K行天下
2008-09-10
打赏
举报
回复
相对于const,volatile是可变的
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。
你这样做语法上没有问题 但是寄存器不是以位为单位,你这样做起不到效果。可以这样试试:
#pargma SBATA pw_timer
struct{
uchar volatile f_delay :1;
uchar :7;//添加填充比特,放到下一个字节,但是似乎这样做就没有必要使用位域了!
uchar dummy :7;
}pw_timer;
关于
结构体
指针类型的强制转换
###
结构体
指针类型的强制转换 #### 一、引言 在STM32嵌入式系统的开发过程中,经常需要对硬件寄存器进行直接操作,以实现对GPIO(General Purpose Input/Output,通用输入输出)等外设的精确控制。在C语言编程中...
AD7705模数转换
volatile
uint16_t eep_cali_data_addr;//计算校准系数存放地址的变量 extern
volatile
uint8_t timer0out;//主函数定义的超时标志 extern
volatile
MODULE_INFO module_info;//主函数定义的模块信息
结构体
extern...
MISRA-C:指针、
结构体
、联合体的安全规范
### MISRA-C:指针、
结构体
、联合体的安全规范 #### 指针、
结构体
和联合体的安全规范概述 MISRA-C标准旨在确保嵌入式系统中使用的C语言代码的质量和安全性。该标准特别关注指针、
结构体
和联合体的使用,因为这些...
101-FreeRTOS202212 - 任务控制块
结构体
定义
volatile
StackType_t *pxTopOfStack; /* 指向任务堆栈上最后一个项目的位置 */ #if ( portUSING_MPU_WRAPPERS == 1 ) xMPU_SETTINGS xMPUSettings; /* MPU 设置,定义在端口层 */ #endif ListItem_t ...
【C语言】
Volatile
的陷阱
这行代码
里
,
volatile
修饰的是 reg 这个变量,指针变量本身是
volatile
的,但指针所指的内容却不是
volatile
的。这种写法通常用在对共享指针的声明上,以确保指针变量的值总是从内存中载入的。 其次,
volatile
...
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章