Gegenüber C/C++ Version V4.0B04 haben sich einige wesentliche Punkte geändert.
Bitfelder können jetzt den Typ long long
haben.
Gegenüber C/C++ Version V4.0B03 haben sich einige wesentliche Punkte geändert.
Das switch
-Statement akzeptiert jetzt eine Expression vom Typ long long
.
Der Inhalt der ETR-Datei hat sich geändert. Der neue Inhalt kann nicht mit einem Compiler V4.0B03 oder älter genutzt werden.
Gegenüber C/C++ Version V4.0B00 haben sich einige wesentliche Punkte geändert.
Die Bibliothek für die Sprachmodi C++2017 und C++2020 wird jetzt in zwei Versionen angeboten. Die Version 1 ist der Default und kompatibel zur früheren Bibliothek. Die Version 2 implementiert einige Features des C++ 2020 Standards. Zu Details siehe Kapitel "Die C++-Bibliothek für die Sprachmodi C++ 2017 und C++ 2020".
Gegenüber C/C++ Version V4.0A50 haben sich einige wesentliche Punkte geändert.
Es gibt ein neues Statement: //MODIFY-LIBRARY-VERSION. Damit ist die Abkürzung //MO-LI mehrdeutig.
Gegenüber C/C++ Version V4.0A30 haben sich einige wesentliche Punkte geändert.
Der Compiler unterstützt jetzt die Sprachfeatures des C++ 2020 Standards. Siehe Kapitel "Einschränkungen gegenüber ANSI-/ISO-C++" zu ein paar Einschränkungen. Eine volle Unterstützung der Bibliothek ist aktuell nicht verfügbar, statt dessen wird die existierende C++ 2017-Bibliothek verwendet.
Damit gibt es eine neue Option für diesen Sprachmodus. Der Wert *LATEST wird jetzt auf *2020 abgebildet. Bis Version 4.0A30 wurde *LATEST auf *2017 abgebildet.
Es gibt jetzt eine Überprüfung, ob die Argumente bei einem printf
-Aufruf mit den Angaben im Formatstring übereinstimmen. (siehe __printf_args-Pragma und __scanf_args-Pragma)
Gegenüber C/C++ Version V3.2D haben sich einige wesentliche Punkte geändert.
Die Änderungen des vorliegenden Handbuchs gegenüber dem Benutzerhandbuch zu C/C++ V3.2D betreffen im Wesentlichen die neuen Sprachmodi C11 und C++ 2017 sowie die darauf zurückzuführenden Änderungen von Compiler-Optionen.
Der wichtigste Punkt ist die Voreinstellung des Compilers. Wenn der Sprachmodus nicht explizit angegeben wird, nimmt er immer den modernsten realisierten Sprachstandard. Dies war bei der Version 3 der Fall und ist es jetzt auch. Bei der Version 3 war der (damals) modernste Standard C89. Jetzt unterstützt der Compiler C11 und dies ist auch die Voreinstellung. Bei C++ ist dies ähnlich. Die Version 3 hatte als (damals) modernsten Standard eine Vorabversion von C++98, der aktuelle Compiler unterstützt C++17.
Der neue Compiler unterstützt jetzt 10 Sprachmodi, je 5 für C und C++. Um diese Vielzahl besser zu handhaben, wurde die Syntax zur Angabe des Sprachmodus neu gestaltet. Die in der Version 3 gebräuchlichen Optionen werden weiterhin erkannt und auf neue Optionen abgebildet. Die Abbildung ist:
MODIFY-SOURCE-PROPERTIES LANGUAGE= | |
*C(MODE=*ANSI) | *C(MODE=*1990,STRICT=*NO) |
*C(MODE=*STRICT-ANSI) | *C(MODE=*1990,STRICT=*YES) |
*CPLUSPLUS(MODE=*ANSI) | *CPLUSPLUS(MODE=*V3,STRICT=*NO) |
*CPLUSPLUS(MODE=*STRICT-ANSI) | *CPLUSPLUS(MODE=*V3,STRICT=*YES) |
*CPLUSPLUS(MODE=*CPP) | *CPLUSPLUS(MODE=*V2) |
Bei MODIFY-SOURCE-PROPERTIES wurde der Operand VIRTUAL-FUNCTION-TAB nach hinten verschoben und versteckt. Er wird auch nicht mehr beschrieben. Der letzte Operand mit unveränderter Position ist INSTANTIATION.
Mit der Unterstützung der neuen Sprachmodi wurde auch die Erkennung von fragwürdigen Source-Konstrukten überarbeitet. In manchen Situationen kommen jetzt andere Meldungen als bei C/C++ V3.2D. Dabei kann sich sowohl das Fehlergewicht, die Fehlernummer als auch der Text geändert haben. Es gibt ein paar Situationen, wo entweder C/C++ V3.2 eine Meldung bringt oder C/C++ V4.0, aber nicht beide.