VC++ - Interner Compiler-Fehler



  • ich erhalten diese Fehlermeldung. Was soll ich damit anfangen? Kann ich davon ausgehen, dass der Fehler beim Compiler und nicht bei mir liegt?



  • Eventuell kannst du damit etwas anfangen:

    Schwerwiegender Fehler C1001
    INTERNER COMPILER-FEHLER
    (Compiler-Datei 'Datei', Zeile Nummer)

    Diese Fehlermeldung wird meist im Zusammenhang mit einer der beiden folgenden Situationen erzeugt:

    Fehler bei der Wiederherstellung des internen Zustands des Compilers nach der Erkennung eines Syntaxfehlers im kompilierten Programm. Manchmal kann der erste Durchlauf des Compilers bei der Zuordnung von Syntaxfehlern in falsch formatierten Programmen fehlschlagen. Im allgemeinen wird der Compiler zuvor jedoch mindestens eine Fehlermeldung ausgeben und erst danach einen internen Compiler-Fehler melden. In den meisten Fällen dürfte der interne Fehler nach Beseitigung der zuvor gemeldeten Fehler und einer Neukompilierung behoben sein.

    Fehler des Code-Generators beim Versuch, den richtigen Code für ein Konstrukt zu erstellen - tritt meist im Zusammenspiel mit einem Ausdruck und einer Optimierungsoption auf. Durch die Optimierung wurden Verzweigungen geschaffen, die der Compiler nicht verarbeiten kann. Das Problem läßt sich oft durch die Zurücknahme der einen oder anderen Optimierungsoption für die betroffene Funktion in den Griff bekommen.
    Sind dem internen Compiler-Fehler keine anderen Fehlermeldungen vorausgegangen, sollten Sie überprüfen, in welchem Durchgang der Fehler aufgetreten ist. Verwenden Sie dazu die Compiler-Option /Bd, wodurch vor jedem Durchlauf dessen Name und die verwendeten Argumente ausgegeben werden. Der Fehler ist dann im letzten vor der Fehlermeldung ausgegebenen Durchgang aufgetreten.

    Handelt es sich um den ersten Durchgang (P1 - Pass 1), dann liegt mit Sicherheit ein Fehler bei der Wiederherstellung des internen Zustands nach der Erkennung eines Syntaxfehlers vor, der auftrat, bevor eine Meldung zum eigentlichen Fehler ausgegeben werden konnte. In diesem Fall sollten Sie die Zeile, in der der Fehler aufgetreten ist, unbedingt noch einmal prüfen, da sie den nicht gemeldeten Syntaxfehler enthalten könnte. Mit der Beseitigung aller in dieser Zeile gefundenen Fehler müßte dann auch der interne Fehler behoben sein. Sollten Sie jedoch in dieser (oder in den umliegenden Zeilen) keinen Fehler finden, benachrichtigen Sie den Microsoft Software Service.

    Tritt der Fehler dagegen im zweiten Durchgang (P2 - Pass 2) auf, dann läßt sich das Problem im allgemeinen durch Weglassen einiger Optimierungsoptionen (oder durch Verwendung eines anderen Code-Generators) lösen. Sie finden heraus, um welche Option es sich handelt, indem Sie einfach ihr Programm mehrmals kompilieren und dabei schrittweise immer weniger Optimierungsoptionen angeben - so lange, bis die Fehlermeldung ausbleibt. Im allgemeinen ist die zuletzt entfernte Option das Problem, und alle anderen Optimierungen können sicher verwendet werden. Meistens tritt das Problem mit den Optionen /Og, /Oi und /Oa auf. Wenn Sie herausgefunden haben, welche Option den Fehler verursacht hat, sollten Sie die entsprechende Optimierung nicht unbedingt für das gesamte Programm ausschalten: Verwenden Sie das Pragma optimize, um die Deaktivierung lokal auf die betroffenen Funktionen zu beschränken.

    Nur sehr selten treten solche Fehler auf einer tieferen Ebene der Optimierung auf, oder gar wenn jegliche Optimierung ausgeschaltet ist. Dann kann eine Veränderung der betroffenen Zeilen (und ggf. der umliegenden) zu einer Lösung führen. Sollten Sie dennoch keine Lösung finden, lesen Sie die Hilfedatei des Software Services oder den Abschnitt über den Software Service in einem Ihrer Handbücher.

    MfG SideWinder



  • bird schrieb:

    Kann ich davon ausgehen, dass der Fehler beim Compiler und nicht bei mir liegt?

    Nein. Nach meiner Erfahrung definitiv nicht. Habe ich oft im Zusammenhang mit Templates gehabt. Lag aber immer an mir.



  • @bird: Hast du auch schon Service Pack 6 installiert?



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum MFC mit dem Visual C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Super!!!
    Seit ich ServicePack6 aufgespielt habe, ist bei gleichem Code kein interner Fehler mehr aufgetreten.
    Danke!!!


Anmelden zum Antworten