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