打印
[牛人杂谈]

static volatile关键字在修饰变量时候的重要意义

[复制链接]
536|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xixi2017|  楼主 | 2024-7-12 20:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static:

static 关键字用于变量声明中,表示该变量的作用域仅限于声明它的文件或函数内部。
对于文件作用域的变量(如上例中 g_u32AdcIntFlag_TP),static 使得这个变量只能在这个文件中被访问,其他文件无法直接访问这个变量。这有助于避免命名冲突和保护数据。
对于函数内部的变量,static 使得变量在函数调用之间保持其值(即静态局部变量),而不是每次调用函数时重新创建。



volatile:

volatile 关键字用于告诉编译器,这个变量可能会在程序的正常控制流之外被改变(如通过硬件中断或其他并发进程)。
由于编译器可能会优化代码(例如将变量存储在寄存器中而不是内存中),volatile 告诉编译器每次访问这个变量时都要从内存中读取,而不是使用寄存器中的副本。这样可以确保程序能正确检测到变量的变化。


使用特权

评论回复
沙发
xixi2017|  楼主 | 2024-7-12 20:36 | 只看该作者
例如:
static volatile uint32_t g_u32AdcIntFlag_TP;


static volatile uint32_t g_u32AdcIntFlag_TP; 是一个全局静态变量,用来表示ADC中断标志,具有无符号32位整数类型,并且可能会在正常程序控制流之外被改变(例如通过中断服务程序)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

1843

帖子

1

粉丝