歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 關鍵字volatile在C語言下的理解

關鍵字volatile在C語言下的理解

日期:2017/3/1 9:21:18   编辑:Linux編程

volatile關鍵字:防止被編譯器優化;下面是在Linux環境下的解釋:

*注釋:解釋下linux下的優化:

Linux下,gcc 是指gcc c編譯器。編譯選項-O1告訴編譯器使用第一級優化。增加優化會使程序執行的更快,但是也會有一定的缺點,它會造成機器代碼很大程度的變化,從而使機器碼和原代碼很難對應起來。從程序方面考慮我們會經常使用第二級優化-O2。這個問題以後介紹。

下來我們看下面代碼沒有加關鍵字volatile

通過下面不加優化命令得到結果;

可以看到結果被改變。

通過下面加優化的命令得到結果:

可以看見沒有改變。

因為經過優化後的變量會放在寄存器中。前面已經說過寄存器是速度最快的。

下面是加volatile的代碼:

可以看到,雖然經過-O2優化,但是加volatile後10還是被改成20;

結論:

volatile關鍵字是防止編譯器對其變量進行優化。

Copyright © Linux教程網 All Rights Reserved