Ich benutze C ++, um den algorithmischen Teil einer iPhone-Anwendung zu entwickeln, und ich stoße auf einen seltsamen Fehler. Der Code, den ich habe, kompiliert gut mit gcc-4.2 sowohl unter Linux, auf dem Mac und auf dem iPhone-Gerät, nur nicht auf dem Simulator, was das Debuggen und Testen sehr schwierig macht.
Die Fehlermeldungen aus den Versuchen, für den Simulator zu kompilieren, ähneln einem bekannten Fehler in 4.0.x, obwohl das nicht ganz klar ist, warum ich gcc-4.2 explizit als Standard-Compiler eingestellt habe.
Um den Fehler zu demonstrieren, habe ich das folgende kleine Code-Snippet vorbereitet:
bug.cpp
%Vor%und versuchte dann, es wie folgt zu kompilieren:
compile.sh
%Vor%Obwohl ich gcc-4.2 verwende, um für den Simulator zu kompilieren, erhalte ich dieselbe Fehlermeldung wie wenn ich unter gcc-4.0 kompiliere, nämlich:
%Vor%Irgendwelche Ideen, warum dieser gcc-4.0.x-Bug in den Simulator kriecht, obwohl der Simulator eigentlich gcc-4.2.x verwenden soll, wo dieser Fehler behoben wurde?
Ich bin mir nicht sicher, ob das genau die richtige Antwort ist, aber das würde wahrscheinlich erklären, warum Sie das Verhalten von 4.0 bei der Verwendung von 4.2 sehen:
%Vor%Es sieht so aus, als würden sie versuchen, den Headersatz 4.0 für beide Versionen zu verwenden, zumindest auf Snow Leopard mit Xcode 3.2.
Es gibt ein Problem mit den Iteratoren von unordered_map, die keine Standardkonstruktoren in gcc-4.0.x haben
Initialisierung bei der Deklaration sollte es beheben:
%Vor%