Heim  >  Artikel  >  Backend-Entwicklung  >  Warum funktioniert std::stoi nicht mit MinGW 4.6.1 unter Windows?

Warum funktioniert std::stoi nicht mit MinGW 4.6.1 unter Windows?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 09:29:27626Durchsuche

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

Kompilierungsfehler mit std::stoi in MinGW 4.6.1

Beim Versuch, ein Programm mit std::stoi in MinGW 4.6 zu kompilieren .1 wird möglicherweise eine Fehlermeldung angezeigt, die besagt, dass „stoi“ kein Mitglied von „std“ ist. Dieses Problem ist auf eine nicht standardmäßige Deklaration von vswprintf unter Windows zurückzuführen.

Ursache des Problems

Die GNU-Standardbibliothek definiert das Makro _GLIBCXX_HAVE_BROKEN_VSWPRINTF unter Windows, das das deaktiviert Konvertierungsfunktionen, einschließlich std::stoi. Dieses Makro ist bei Verwendung von MinGW unter Windows aufgrund eines Problems mit vswprintf auf dieser Plattform aktiviert.

Beheben des Problems

Um dieses Problem zu beheben, ziehen Sie die folgende Problemumgehung in Betracht:

  1. MinGW-Header-Dateien ändern (nicht empfohlen):

    • Entfernen Sie das !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)-Makro in Zeile 2754 von .. ./lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h.
    • Fügen Sie das Makro wieder um die Zeilen 2905 bis 2965 hinzu, die auf std::vswprintf verweisen.

    Diese Änderung deaktiviert die std::to_wstring-Funktionen, aber andere Konvertierungsfunktionen sollten verfügbar werden.

Zusätzliche Informationen

  • Weitere Einzelheiten zu diesem Problem finden Sie im GNU Bugzilla-Bericht: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522.
  • Diese Problemumgehung ist möglicherweise nicht für alle geeignet Benutzer und sollten mit Vorsicht implementiert werden.

Das obige ist der detaillierte Inhalt vonWarum funktioniert std::stoi nicht mit MinGW 4.6.1 unter Windows?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn