Scope probleme



  • @SeppJ

    Ich habe es übersetzt. Ein neues Projekt wird in VS 2019 allerdings mit /permissive- angelegt. Das ist ja genau der Schalter, mit dem MS endlich C++ kompatibel werden möchte. Ohne den Schalter geht es auch in VS 2019.


  • Mod

    @manni66 sagte in Scope probleme:

    Ich habe es übersetzt. Ein neues Projekt wird in VS 2019 allerdings mit /permissive- angelegt. Das ist ja genau der Schalter, mit dem MS endlich C++ kompatibel werden möchte. Ohne den Schalter geht es auch in VS 2019.

    @Jichok: Demnach wäre der Workaround für dich, dass du diesen Schalter deaktivierst. Solange MSVC abwärtskompatibel zu seinen alten Sünden bleibt, kannst du damit überleben. Falls du einen gänzlich anderen Compiler nutzt, wirst du den Code korrigieren müssen, denn er ist schlicht falsch und funktionierte nur aufgrund der Nachlässigkeit eines uralten Compilers.



  • @SeppJ Ich nütze, und damals auch nützte CODEBLOCKS, und wie geschrieben habe diese Codeschnippsel stammt von die gekaufte Astronomische Programmpacket von 1993, das damals mit der selben IDE (villeicht eine frühere version) tadellos funktionierte. Alle meine code sind (noch) unverändert. Die R_X exsistiert sehr wohl in VecMat3D beschrieben. https://www.dropbox.com/s/rswytu7yqgw6kcw/APC_VecMat3D.cpp?dl=0 https://www.dropbox.com/s/ho7x2kft2jqzd8h/APC_VecMat3D.h?dl=0


  • Mod

    Code::Blocks ist eine IDE, das sagt erst einmal nichts über den benutzten Compiler. Hier benutzt du der Fehlermeldung nach den GCC, welcher das halt niemals schlucken wird, egal was du tust. Mag sein, dass du damals etwas anderes benutzt hat, oder dass ein GCC von 1993 das anders gemacht hat (wobei der GCC aber eigentlich immer recht penibel und standardtreu war), aber heute wirst du das nur noch mit dem msvc und speziellen Schaltern übersetzt bekommen. Siehe oben. Da Code::Blocks wie gesagt unabhängig vom Compiler ist, ist es durchaus möglich, dort auch den MSVC einzusetzen. Mag aber nicht ganz einfach sein, das einzurichten, wenn man sich nicht auskennt.

    Du hast also mehrere Optionen:

    1. MSVC installieren, einrichten, und mit den entsprechenden Parametern benutzen. Nachteil: Nicht ganz einfach. Vorteil: Anleitungen dafür sollten googelbar sein.
    2. Den Code korrigieren. Vorteil: Sehr einfach, wenn man sich auskennt. Nachteile: Quasi unmöglich, wenn man die Sprache nicht richtig versteht. Außerdem kann man dir nur schwer via Ferndiagnose helfen.
    3. Einen GCC von 1993 installieren und hoffen. Vorteil: Es wäre eine interessante Herausforderung. Nachteil: Es wäre eine interessante Herausforderung.

    Für alle gilt, dass das auch eventuell nur der erste, einfache Fehler ist und du danach eventuell einfach nur den nächsten finden wirst, sobald der erste verschwunden ist.



  • @Jichok: In welcher Zeile der Datei "APC_VecMat3D.cpp" erhältst du denn den Fehler (denn auf R_z wird dort ja nirgends zugegriffen)? Oder wird schon im Header ""APC_VecMat3D.h" darauf zugegriffen?



  • @SeppJ Danke für die ausführliche und konstruktive antworten! Ich glaube ,das mir bleibt nichts anders übrig, dass anstatt MinGw eine andere compiler installiere, oder ich mich diese astronomische programme durchackere und dementsprechend modifizere. Noch mal danke für deine Hilfsbereitschaft.


  • Mod

    Wenn du jemanden vor Ort hast, dem du live diese gekauften Programme zeigen kannst, der sich mit C++ auskennt, dann würde ich das zuerst versuchen. Denn es könnte sein, dass man nur 1-2 Zeilen ändern muss. Wahrscheinlich ein paar fehlende Includes. Aber von hier aus im Forum dürfte es schwer sein, das aus der Ferne genauer zu bestimmen.



  • @Th69 Die Fehler erhalte in einer andere (Kepler) routine wo die header von VecMat3D includiert. Dass das Leben nicht so einfach sein soll, es giebt andere routine die, diese Funktion erkennen! Total rätselhaft! https://www.dropbox.com/sh/fie7rknojhss959/AAB9kqFTmWY01TrpS_J5WrdOa?dl=0



  • @SeppJ Wenn das der Fall wäre, hätte ich nicht da geschrieben, aber danke. Die includes waren die erste die ich kontrollierte. Wie ich für TH69 geschrieben habe, diese Funktion (R_z) wurde anderswo auch genutzt, aber bloss da spielt verrückt.


  • Mod

    @Jichok sagte in Scope probleme:

    @SeppJ Wenn das der Fall wäre, hätte ich nicht da geschrieben, aber danke. Die includes waren die erste die ich kontrollierte. Wie ich für TH69 geschrieben habe, diese Funktion (R_z) wurde anderswo auch genutzt, aber bloss da spielt verrückt.

    Es werden halt vor der Fehlerstelle entsprechende Includes fehlen, die an der anderen Stelle sichtbar sind. C wird in vollständig getrennten Einheiten (pro Datei) und strikt von oben nach unten übersetzt. Falls in irgendeiner anderen Datei oder an irgendeiner späteren Stelle kein Fehler auftritt, dann hat das nichts damit zu tun, ob an der Fehlerstelle der Fehler auftritt oder nicht. An der Stelle zählt nur, was in dieser Datei weiter oben alles passiert ist.


Log in to reply