Heim  >  Artikel  >  Backend-Entwicklung  >  Warum fehlt „std::stoi“ in MinGW? Ein Blick auf das zugrunde liegende Problem und eine mögliche Lösung.

Warum fehlt „std::stoi“ in MinGW? Ein Blick auf das zugrunde liegende Problem und eine mögliche Lösung.

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 15:28:02136Durchsuche

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

std::stoi-Fehler in MinGW: Ein Abhängigkeitsdilemma

Kompilierung mit std::stoi in MinGW nicht möglich? Finden Sie den überraschenden Grund und eine mögliche Problemumgehung heraus.

Problem:

Versuche, Funktionen wie std::stoi zu verwenden, lösen Fehler in MinGW mit gcc 4.6.1 aus, insbesondere „ Fehler: „stoi“ ist kein Mitglied von „std“. Diese Funktionen gibt es in neueren Versionen der GNU Standard Library (GSL), aber warum nicht in MinGW?

Antwort:

Der Übeltäter ist eine nicht standardmäßige Deklaration unter Windows. GSL definiert _GLIBCXX_HAVE_BROKEN_VSWPRINTF auf dieser Plattform, wodurch die Konvertierungsfunktionen std::stoi und andere deaktiviert werden.

Problemumgehung:

Eine mögliche Lösung besteht darin, die GSL-Header-Dateien zu ändern. Entfernen Sie das Makro !definiert(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) aus Zeile 2754 von .../lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h. Fügen Sie außerdem das Makro wieder in den Zeilen 2905 bis 2965 hinzu, die auf std::vswprintf verweisen.

Auswirkungen:

Diese Problemumgehung deaktiviert std::to_wstring-Funktionen, lässt aber zu Verwendung anderer Konvertierungsfunktionen. Beachten Sie, dass es sich hierbei um eine nicht standardmäßige Änderung handelt und unvorhergesehene Folgen haben kann.

Das obige ist der detaillierte Inhalt vonWarum fehlt „std::stoi“ in MinGW? Ein Blick auf das zugrunde liegende Problem und eine mögliche Lösung.. 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