Informationen zum Update ======================== Sehr geehrter Kunde, auf dieser Diskette befindet sich die neueste Version 3.1 von MaxonC++ sowie der neue Editor MaxonED, der EDWARD ersetzt. Hinweise zur Installation des MaxonED ------------------------------------- Mit Hilfe des Installationsskripts können Sie dieses Update bequem auf Ihrem Rechner installieren. Sie können im Verlauf der Installation wählen, ob Sie weiterhin mit EDWARD arbeiten oder ob Sie in Zukunft MaxonED benutzen möchten. MaxonED wird in beiden Fällen installiert, aber nur wenn Sie in nutzen möchten, wird auch die Konfiguration von MaxonC++ entsprechend abgeändert. Ein Handbuch zu MaxonED finden Sie als AmigaGuide-Datei im Verzeichnis "MCPP:BIN". Falls Sie MaxonED nachträglich als Editor für MaxonC++ einsetzen möchten, ändern Sie bitte in den Dateien "S:mcpp.config" bzw. "MCPP:BIN/mcpp.SESSION" (es können beide oder je eine davon vorhanden sein!) den Editor-Pfad in der letzen Zeile von "EDWARD:EDWARD" in "MCPP:BIN/MaxonED". Umgekehrt können Sie vorgehen, wenn Sie wieder EDWARD benutzen möchten. Hinweise zur neuen Compilerversion 3.1 -------------------------------------- Besitzer der Light-Version können sich darüber freuen, daß beim Compiler der Version 3.1 nicht mehr zwischen Light- und Developer-Version unterschieden wird, d.h. auch in der Light-Version wird jetzt der AT&T 3.0-Standard unterstützt! Eine Übersicht der Änderungen bis Version 3.1 des Compilers finden Sie in der nun folgenden History: Update-Protokoll Maxon C++ 3 ---------------------------- * Version 3.00.0 (31.10.94) Erste veröffentliche Version (nur Light) * Version 3.00.1 (06.11.94) Neue Features: + Linker-Fehlermeldungen sind schöner und aussagekräftiger geworden Fixed Bugs: + Beim Exception Handling wurden teilweise bestimmte Daten fälschlich an ungeraden Adressen abgelegt -> Absturz auf 68000er schon beim Laden(!) der Programme + Seltsame Fehlermeldung bei Initialisierung von "const enum XXX" * Version 3.00.2 (22.11.94) Fixed Bugs: + MCPP erzeugte neue Makefiles (nur bei Anweisung "newmk") im falschen Verzeichnis + Casting nach "const"-Typen wurde manchmal als Fehler gemeldet, vor allem bei mehrfachen Klammer-Verschachtelungen + Konstruktoraufruf für statische Member von Klassentemplates unterblieb, wenn es keinen expliziten Konstruktor gab, sondern nur Virtual-Zeiger initialisiert werden mußten. + Der Operator + aus der Stringbibliothek warf (harmlose) Enforcer Hits, wenn ein Argument mit einen NULL-String initialisiert war. + Enforcerhits (ebenfalls harmlos), wenn beim Operator "new" falsche oder fehlende Konstruktor-Argumente übergeben wurden * Version 3.00.2 (09.12.94) Fixed Bugs: + Pointer auf Memberfunktionen können jetzt auch mit 0 initialisiert werden + verschiedene Probleme mit verschachtelten Klassendefinitionen behoben + Wenn mit "catch" ein Objekt mit Destruktor aufgefangen wurde, wurde dessen Destruktor fälschlich nicht aufgerufen. + Falsche Fehlermeldungen bei Initialisierung konstanter Arrays + Destruktoren konnten nicht nachträglich als "inline" definiert werden. + Präprozessor: Stringumwandlung mit "#" machte bei verschachtelten Makro-Aufrufen Probleme. + Template-Argumente konnten bei qualifizierten Bezeichnern (Bla::Fasel) nicht auf der linken Seite stehen. + "scanf" stürzte bei "double" und "float" ab (wer benutzt eigentlich noch scanf, wenn es cin gibt? Also, ich jedenfalls nicht...) + Wenn "realloc" mit NULL-Pointer aufgerufen wird, wird jetzt vorschriftsmäßig Speicher angefordert (bisher: Ergebnis NULL) + Bei überladenem Operator "delete" wird beim zweiten Parameter ein eventuelles "register" ignoriert (aus implementatorischen Gründen nötig) Neue Features: + Präprozessor-Funktion "defined" akzeptiert jetzt auch Argumente in Klammern + "-D" als Alternative zu "-d" erlaubt (ist kompatibler so) * Version 3.00.3 (16.12.94) Fixed Bugs: + Enforcerhit bei unerlaubtem Casting behoben + Ergebnis von "putc", "putchar" und "fputc" war immer -1 + Ergebnis von "fread" war falsch + "printf" und "fprintf" liefern jetzt im Fehlerfall -1 + "fputs" und "puts" sind endlich beide richtig ("puts" gibt ein Linefeed aus, "fputs" nicht) + erstes Argument von "sscanf" ist jetzt "const char*". Hier widersprachen sich das Kernighan/Ritchie-Buch und die ANSI-Spezifikation... Neue Features: + Mehrere Nicht-Member-Template-Funktionen können jetzt den gleichen Namen tragen (unklarer Sprachstandard, aber so ists wohl kompatibler) + Neue Fehlermeldung bei Deklaration eines Konstruktors mit Ergebnistyp * Version 3.00.4 (29.01.95) Fixed Bugs: + Compilergenerierte Copy-Konstruktoren vermurxten gründlich das Exception Handling (Absturz) + Linker-Probleme mit doppelt definierten Symbolen bei Option "-L" + 16-Bit-Multiplikation bei 68020-Codeerzeugung fehlerhaft * Version 3.00.4 (30.01.95) Fixed Bug: + Vorcompilierte Headerfiles machten bei Exception Handling öfters Probleme. * Version 3.00.4 (11.02.95) Änderungen: + In der ".mdbg"-Datei werden für die Objektdateien grundsätzlich absolute Pfade eingetragen (vermeidet Chaos bei Installation in obskuren Verzeichnissen) * Version 3.00.5 (03.03.95) Fixed Bugs: + Funktionen "atof", "strtod", "Random()" und "difftime" konnten bei FPU-Option nicht aufgerufen werden + FPU-Option: gelegentliche Kollisionen in Register fp0 + FPU-Option: Murx beim Konvertieren int->float und umgekehrt * Version 3.00.5 (05.03.95) Fixed Bug: + ARexx-Port: "errorscript" und "editscript" funktionierten nicht. * Version 3.00.5 (10.03.95) Fixed Bugs: + noch zwei Problemos bei FPU-Option behoben (einer davon wg. Druckfehler im 68030 Assembly Reference Manual - ich bin unschuldig!) * Version 3.00.6 (24.03.95) Fixed Bugs: + noch ein Problem mit Floating-Point-Code, diesmal ohne FPU + Operatoren "&" und "|" konnten mit etwas Mühe zu illegaler Operation mit Adressregister-Operanden überredet werden + Templateklassen konnten nicht direkt als Basis anderer Klassen benutzt werden * Version 3.00.6 (18.04.95) Fixed Bugs: + MCPP speicherte Small-Data-Einstellung ("-gd") nicht in Session bzw. Config ab + Probleme, wenn bei "Small Data" unreferenzierte Datenhunks wegoptimiert wurden + "freopen" schloß geöffnete Dateien nicht * Version 3.00.7 (21.05.95) Fixed Bugs: + Die Zeile "template" bringt den Compiler nicht mehr in Panik * Version 3.00.8 (11.07.95) Fixed Bugs: + Bei Inline-Funktionen wurde (seltsamerweise nur bei Option -g20) d0 unsinnig oft gerettet und wiederhergestellt. + Bei FPU-Version von "modf" waren die beiden Ergebnisse vertauscht * Version 3.00.9 (22.11.95) Fixed Bugs: + Im ASM-Source wurde bei DS.B o.ä. die allokierte Speichergröße nur als 16-Bit-Zahl ausgegeben (das Objekt wurde aber in der richtigen Größe angelegt) + ab 68020 wird der Befehl EXTB.L unterstützt (eher ein vergessenes Feature als ein Bug) + lib_int2float trashte fälschlich Register d1 + Probleme bei Fließkomma-Konstanten mit angehängtem "f" (z.B. "0.5f"): gelegentlich unsinnige Werte * Version 3.10.0 (17.04.96) Fixed Bugs: + Innerhalb von Konstruktoren wurden generell keine virtuellen Funktionen aufgerufen, selbst wenn diese eindeutig nicht über "this" bezogen waren. + Konvertierung konstanter ganzzahliger Werte auf schmalere ganzzahlige Werte wurde compilerintern unterdrückt, z.B. LONG(UBYTE(-1)) ergab -1 statt 255 + Durcheinander bei der Reihenfolge der Konstruktoraufrufe für virtuelle Basisklassen bei Mehrfachvererbung + Die Fehlermeldung 258: "Inconsistent exception specification" war stets von einem Absturz begleitet. + Bei Definition statischer Member eines "const"-Typs mit gleichzeitiger Initialisierung ("const int A::anzahl = 42;") wurde kein Symbol an den Linker exportiert + Die (natürlich falsche) Deklaration "(()()) hallo;" ließ den Compiler abstürzen. + Compilerabsturz, wenn ein "void"-Funktionsergebnis nach "int" gecastet wurde. + Virtuelle Memberfunktionen von Templateklassen wurden manchmal fälschlich nicht erzeugt -> Linker-Fehler