代码点读机 / C / volatile

volatile C · 关键字

告诉编译器该变量可能被程序外部因素改变,不要优化掉对它的读写。

怎么用

volatile 类型 变量名;

小例子

volatile int flag = 0;
int main(void) {
    while (flag == 0) {}
    return 0;
}

编译结果

编译通过,循环体每次都会真正读取 flag

提醒:硬件寄存器或特殊内存访问可用;多线程同步应使用 C11 原子操作或互斥锁

官方文档:https://en.cppreference.com/w/c/language/volatile

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← C全部词条