首頁  >  文章  >  後端開發  >  為什麼 std::stoi 無法在 Windows 上與 MinGW 4.6.1 配合使用?

為什麼 std::stoi 無法在 Windows 上與 MinGW 4.6.1 配合使用?

Barbara Streisand
Barbara Streisand原創
2024-10-30 09:29:27624瀏覽

Why is std::stoi not working with MinGW 4.6.1 on Windows?

MinGW 4.6.1 中std::stoi 編譯錯誤

嘗試在MinGW 4.6 中使用std::stoi 編譯程式時.1中,可能會出現一條錯誤訊息,指示「stoi」不是「std」的成員。此問題源自於 Windows 上 vswprintf 的非標準聲明。

問題原因

GNU 標準函式庫在 Windows 上定義了巨集 _GLIBCXX_HAVE_BROKEN_VSWPRINTF,該巨集會停用轉換函數,包括 std::stoi。在 Windows 上使用 MinGW 時,由於該平台上的 vswprintf 存在問題,會啟用此巨集。

解決問題

要解決此問題,請考慮以下解決方法:

  1. 修改Min GW 頭文件(不建議):

    • 刪除.. 第2754 行的!define(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) 巨集./lib/gcc/mingw32/4.6.1/include/c /bit h.
    • 將巨集加回第2905 至2965 行,引用std::vswprintf。

    此修改將停用 std::to_wstring 函數,但其他轉換函數應該可用。

其他信息

  • 有關該問題的更多詳細信息,請參閱GNU Bugzilla 報告:http://gcc. gnu.org/bugzilla/show_bug.cgi?id=37522。
  • 此解決方法可能不適用於所有人使用者應謹慎實作。

以上是為什麼 std::stoi 無法在 Windows 上與 MinGW 4.6.1 配合使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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