Ich lese gerade einen Entwurf der C11-Spezifikation. Die neu eingeführten Schlüsselwörter: _Bool, _Alignof, _Atomic
Alle fühlen sich wie benutzerdefinierte Erweiterungen an, anstatt wie Standardschlüsselwörter struct, union, int
.
Mir ist klar, dass der Standard im Wesentlichen aus standardisierten Erweiterungen besteht ... aber das ist schrecklich! Vielleicht werden wir uns bald __Long_Long_Reallylong_Integer_MSVC_2020_t
in den Standard einschleichen!
Ist die Abwärtskompatibilität von nicht standardisiertem Code der einzige Grund für den neuen Stil der Schlüsselwörter?
<stdbool.h>
muss die Header-Datei einer C11-Implementierung ein Präprozessor-Makro enthalten, z #define bool _Bool
. Dies ist eine saubere Lösung, da sie die Abwärtskompatibilität beibehält, es jedoch jedem neuen Code, der die neue Header-Datei enthält, ermöglicht, die attraktivere Syntax zu verwenden.