首頁 > 後端開發 > C++ > 主體

使用 std::min 和 std::max 時,為什麼 NOMINMAX 在其他檔案中不起作用?

Linda Hamilton
發布: 2024-11-10 16:02:02
原創
362 人瀏覽過

Why is NOMINMAX not working in other files when using std::min and std::max?

NOMINMAX 和std::min/max 碰撞

要啟用標準庫的std::min 和std::max 函數,您已在main.cpp 檔案中定義了NOMINMAX 巨集。但是,您在其他文件中使用這些函數時遇到問題。

NOMINMAX 的定義是為了停用 Windows 頭檔中的某些舊定義,包括將 min 和 max 重新定義為巨集。這是因為在早期版本的 Visual C 編譯器中,這些巨集是由 Windows 頭檔定義的,可能與標準函式庫的定義衝突。

要解決此問題,您需要確保在所有巨集中都定義了 NOMINMAX您打算使用 std::min 或 std::max 的檔案。但是,簡單地將巨集定義添加到其他文件中似乎不起作用。

這是因為 #define 指令具有全域作用域並影響檔案中的所有後續程式碼。但是,巨集不適用於已經經過預處理的程式碼。因此,後續文件中 NOMINMAX 的定義可能不會影響您已經編寫的程式碼。

要解決此問題,您可以用括號將函數名稱括起來:

(std::min)(x, y);
登入後複製

此語法將確保不應用類似函數的宏,並且編譯器會將函數呼叫解析為std::min。

以上是使用 std::min 和 std::max 時,為什麼 NOMINMAX 在其他檔案中不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板