C語言中的volatile關(guān)鍵字
i = 10
i = 10
輸出的結(jié)果明顯表明,release模式下,編譯器對(duì)代碼進(jìn)行了優(yōu)化,第二次沒有輸出正確的i值。
下面,我們把 i的聲明加上volatile關(guān)鍵字,看看有什么變化:
#i nclude stdio.h>
void main()
{
volatile int i=10;
int a = i;
printf(i= %dn,a);
__asm {
mov dword ptr [ebp-4], 20h
}
int b = i;
printf(i= %dn,b);
}
分別在調(diào)試版本和release版本運(yùn)行程序,輸出都是:
i = 10
i = 32
這說明這個(gè)關(guān)鍵字發(fā)揮了它的作用!
評(píng)論