volatile 是我學 C 語言以來,
花最久時間才真正搞懂的關鍵字。
不是因為語法複雜,
而是因為它的效果是「阻止編譯器做某些優化」,
在沒有優化的情況下,
加不加 volatile 看起來沒有差別,
讓人誤以為自己懂了。
直到有一天,開啟了 -O2 優化,
程式行為突然變了,
才發現原來自己一直用錯。
volatile 是我學 C 語言以來,
花最久時間才真正搞懂的關鍵字。
不是因為語法複雜,
而是因為它的效果是「阻止編譯器做某些優化」,
在沒有優化的情況下,
加不加 volatile 看起來沒有差別,
讓人誤以為自己懂了。
直到有一天,開啟了 -O2 優化,
程式行為突然變了,
才發現原來自己一直用錯。