关于volatile

一句话,就是无论如何都从RAM里取,忽略任何优化

不用volatile

//main.c
#include <stdio.h>
int main()
{
   
int i=10;
   
int now=i;    
   
printf("now= %d\n",now);
   
__asm 
   
{
       
mov    dword ptr [ebp-4],20h
   
}

   
now=i;
   
printf("now= %d\n",now);
   
return 0;

>
cl /Ox main.c
>main
>now=10
>now=10

用volatile

//main.c 
#include <stdio.h>
int main()
{
   
volatile int i=10;
   
int now=i;    
   
printf("now= %d\n",now);
   
__asm 
   
{
       
mov    dword ptr [ebp-4],20h
   
}
   
now=i;
   
printf("now= %d\n",now);
   
return 0;

>
cl /Ox main.c
>main
>now=10
>now=32

原文地址:https://www.cnblogs.com/iwasmu/p/1499987.html