Share via


/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 編譯器選項

  1. 開啟專案的 [ 屬性頁 ] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項] 方塊中,新增 /volatile:iso /volatile:ms ,然後選擇 [確定 ] 或 [ 套用 ] 以儲存變更。

另請參閱

volatile
MSVC 編譯器選項
MSVC 編譯器命令列語法