ホームページ  >  記事  >  バックエンド開発  >  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. MinGW ヘッダー ファイルの変更 (非推奨):

    • .. の 2754 行目で !define(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) マクロを削除します。 ./lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h.
    • std::vswprintf を参照するマクロを 2905 行目から 2965 行目あたりに再度追加します。

    この変更により std::to_wstring 関数が無効になりますが、他の変換関数が使用可能になるはずです。

追加情報

  • この問題の詳細については、GNU Bugzilla レポートを参照してください: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522。
  • この回避策はすべての人に適しているわけではありません。ユーザーは注意して実装する必要があります。

以上がstd::stoi が Windows 上の MinGW 4.6.1 で動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。