首頁  >  文章  >  後端開發  >  為什麼 MinGW 中缺少 `std::stoi`?看看根本問題和可能的解決方案。

為什麼 MinGW 中缺少 `std::stoi`?看看根本問題和可能的解決方案。

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 15:28:02136瀏覽

Why is `std::stoi` Missing in MinGW? A Look at the Underlying Problem and a Possible Solution.

MinGW 中的 std::stoi 錯誤:依賴困境

無法在 MinGW 中使用 std::stoi 進行編譯?找出令人驚訝的原因和潛在的解決方法。

問題:

嘗試在帶有gcc 4.6.1 的MinGW 中使用std::stoi 等函數會觸發錯誤,特別是“錯誤:“stoi”不是「std」的成員」。這些函數存在於更新版本的 GNU 標準函式庫 (GSL) 中,但為什麼 MinGW 中沒有?

答案:

罪魁禍首是非標準聲明在Windows中。 GSL 在此平台上定義了 _GLIBCXX_HAVE_BROKEN_VSWPRINTF,這會停用 std::stoi 等轉換函數。

解決方法:

可能的解決方案是修改 GSL 頭檔。從 .../lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h 的第 2754 行刪除 !define(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) 巨集。此外,將巨集新增回第 2905 至 2965 行,該巨集引用 std::vswprintf。

意義:

此解法停用 std::to_wstring 函數,但允許使用其他轉換函數。請注意,這是非標準修改,可能會產生不可預見的後果。

以上是為什麼 MinGW 中缺少 `std::stoi`?看看根本問題和可能的解決方案。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn