Chinese English 切换到窄版

 找回密码
 立即注册
搜索
查看: 1135|回复: 0

可变型变量volatile类型限定符

[复制链接]

主题

0

回帖

0

积分

版主

积分
0
发表于 2025-2-20 15:25:11 | 显示全部楼层 |阅读模式
可变型变量volatile类型限定符用来通知编译器某一变量不能保证在连续访问的条件下,其值不被改变,例如所有的与I/O口有关的变量在编译器自带的头文件中都是被声明为volatile类型,如下所示:
static volatile unsigned char        PORTA        @ 0x05;
需要程序员注意的是有可能在中断时被改变的变量应该被定义为volatile类型,尤其是编译时选择全局优化级别较高时,定义为volatile可以禁止编译器对此变量进行优化,这能够防止编译器进行程序优化时,将认为明显多余的可变型变量删除,我们可以查看一下编译后生成的编译列表文件就会发现,编译器对volatile目标的访问与对non-volatile的访问是不同的, 如对non-volatile目标置1是先将该变量清0后加1, 而对volatile目标置1是先将1放在W中后再将W赋值给可变型变量。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|汇春技术社区 ( 粤ICP备08030648号-1 )

GMT+8, 2025-7-9 07:08 , Processed in 0.149118 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2024 YSPRING. All Rights Reserved. 汇春科技,版权所有。

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