/volatile (volatile 關鍵字轉譯)
指定如何 解譯 volatile 關鍵詞。
語法
/volatile:{iso|ms}
引數
/volatile:iso
選取 ISO 標準C++語言所定義的嚴格 volatile
語意。 在揮發性存取上不保證取得/發行語意。 如果編譯程式以ARM為目標(ARM64EC除外),這是的預設解譯 volatile
。
/volatile:ms
選取Microsoft擴充 volatile
語意,以在 ISO 標準C++語言之外新增記憶體排序保證。 取得/發行語意保證在揮發性存取上。 不過,這個選項也會強制編譯程式產生硬體記憶體屏障,這可能會在ARM和其他弱式記憶體排序架構上增加大量額外負荷。 如果編譯程式以 ARM64EC 或任何非 ARM 平臺為目標,這是的預設解譯 volatile
。
備註
強烈建議您在處理跨線程共用的記憶體時,使用 /volatile:iso 以及明確的同步處理基本類型和編譯程式內部函數。 如需詳細資訊,請參閱 volatile。
如果您在專案中間移植現有的程式代碼或變更此選項,啟用警告 C4746 來識別受語意差異影響的程式代碼位置可能會很有説明。
沒有 #pragma
相當於控制這個選項。
在 Visual Studio 中設定 /volatile 編譯程序選項
開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [其他選項] 方塊中,新增 /volatile:iso 或 /volatile:ms,然後選擇 [確定] 或 [套用] 以儲存變更。