在C語言中,volatile關(guān)鍵字用來告訴編譯器該變量可能會在程序執(zhí)行過程中被意外修改,因此編譯器不應(yīng)該對該變量進行優(yōu)化,而是應(yīng)該每次都從內(nèi)存中重新讀取該變量的值。這樣可以避免編譯器將該變量的值緩存在寄存器中,從而確保程序能夠正確地訪問該變量。
volatile關(guān)鍵字通常用于多線程編程或者與硬件相關(guān)的編程中,例如在中斷服務(wù)程序中經(jīng)常會使用volatile修飾的變量,以確保在中斷發(fā)生時能夠正確地讀取變量的最新值。
示例:
volatile int flag = 0;
void interrupt_handler()
{
flag = 1;
}
int main()
{
while(!flag)
{
// do something
}
return 0;
}
在上面的示例中,flag變量被聲明為volatile,以確保在中斷發(fā)生時能夠正確地讀取flag的最新值。