社区
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里的一位,其它七位都不用.
请问,以上程序正确否?
...全文
450
8
打赏
收藏
结构体里的volatile是什么意思
#pargma SBATA pw_timer struct{ uchar volatilef_delay:1; uchardummy:7; }pw_timer; 烦请问下,这里结构体里的volatile是什么意思? 这段程序,我是只想用到pw_timer里的一位,其它七位都不用. 请问,以上程序正确否?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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嵌入式开发过程中,关于对GPIOA等地址的强制性
结构体
指针类型转换的参考依据!
AD7705模数转换
#include
#include
#include
#include "1KF01.h" #include "ad7705.h" #include "HC595.h" #include "main.h" #include "crc16.h" #include "usart.h"
volatile
uint16_t eep_cali_data_addr;//计算校准系数存放地址的变量 extern
volatile
uint8_t timer0out;//主函数定义的超时标志 extern
volatile
MODULE_INFO module_info;//主函数定义的模块信息
结构体
extern
volatile
ALL_CALI_DATA all_cali_data;//主函数定义的读取EEPROM校准数据的
结构体
extern
volatile
CHN_CALI_DATA module_cali_data[CALI_VALUE_NUM];//主函数定义的全局校准系数数组
MISRA-C:指针、
结构体
、联合体的安全规范
解析如何安全而高效地应用指针、
结构体
和联合体。
101-FreeRTOS202212 - 任务控制块
结构体
定义
101-FreeRTOS202212 - 任务控制块
结构体
定义
【C语言】
Volatile
的陷阱
最近写的关于在嵌入式开发中常遇到的关于
volatile
关键字使用的短文,都是些通用的技术,贴上来share。
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章