當所有類型的編譯器優化都被關閉時,我們是否需要使用volatile限定符,假設在啓用編譯器優化時需要這種優化。在所有編譯器優化禁用時使用volatile
我看了SO Volatile and compiler optimization的帖子,說是的,但沒有提供任何需要的特定用例。
有人可以指出仍然需要使用它們的情況,而不管啓用或禁用哪種優化。
當所有類型的編譯器優化都被關閉時,我們是否需要使用volatile限定符,假設在啓用編譯器優化時需要這種優化。在所有編譯器優化禁用時使用volatile
我看了SO Volatile and compiler optimization的帖子,說是的,但沒有提供任何需要的特定用例。
有人可以指出仍然需要使用它們的情況,而不管啓用或禁用哪種優化。
如果您需要volatile
爲您的程序正確優化,那麼您還需要它,而無需優化。優化只會改變各種不正確狀態之間的錯誤程序。
只改變不正確*行爲之間不正確程序的*行爲* – Caleth
@Caleth:採取點,更新點。 –
C++標準沒有規定「編譯器優化」。 – 2017-06-01 13:02:58
所以C或C++? C和C++是不同的語言,如果你想要一個好的答案,你應該只用一個標籤。最好還可以標記你想要的答案的C/C++版本。也就是說,正如@ manni66所提到的那樣,標準沒有規定這種行爲。 – tambre
一個這樣的用例是當你使用一個指向內存映射地址的指針時。 –