C++中volatile变量测试

    xiaoxiao2023-11-06  156

    volatile有好几个特性,让我们来验证一下

    1.对声明为volatile的变量操作时,每次都会从内存中取值,而不会使用原先保存在寄存器中的值。

             让我们看一下两个例子,一个例子是对不声明为volatile的变量操作,一个例子是对声明为volatile的变量操作。编译器为gcc version 4.8.4,平台为32位ubuntu14.04,开启了一级优化,即g++ -O1 -std=c++11。汇编部分只看有注释的部分就行了。

    //非volatile版 #include<stdio.h> #include<pthread.h> #include<iostream> int fun(int a){ int x; scanf("%d",&x); if(a > x) return a; else return x; } int main(){ int a = 5; //声明为非volatile int b = 10; int c = 20; int d; scanf("%d",&c); a = fun(c); b = a + 1; printf("%d,%d\n",b,d); return 0;; } 080485fd <_Z3funi>: 80485fd: 53 push
    转载请注明原文地址: https://yun.8miu.com/read-111163.html
    最新回复(0)