c语言关键字volative的作用

本文解释了嵌入式开发中__IO与volatile关键字的作用及区别,详细阐述了使用volatile声明变量的意义,尤其是在需要反映实时物理信号的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在嵌入式开发中经常见到这样的关键字 __IO,用来对单片机的IO引脚、寄存器等变量进行声明,通过追踪其定义,发现 __IO实际就是关键字 volative  . 如果一个变量声明时候用到关键字volative ,那么以后每次用到该变量都要从其物理地址直接读取,不能利用原来的数据,主要是避免编译器优化的原因和外部造成的变量改变,举例如下:

void divv(int a,b)
{
int c,d;
c=a/b;
d=a/b;
}



这个时候变量c和d的值是完全相同的。

void divv(volative int a,b)
{
int c,d;
c=a/b;
d=a/b;
}
而这段代码c和d的值有可能不同,因为计算C时候取变量a,b;在计算过程中a,b的值有可能被改变,例如是单片机IO口,外部电平信号的改变,造成变量的改变,计算d的时候,由于变量a和b被声明为 volative int型,需要重新读取a、b的值,这种情况下计算出来的d和c就不同了。

总结:

1、如果这个变量需要实时放映物理信号,这种情况下应该声明为 volative ;

2、volative的目的是让编译器生成汇编代码的时候,每次用到该变量都要生成读取该变量的汇编代码,而不是用上一次的值,避免被编译器优化掉。





                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值