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