Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Erweiterungen gegenüber ANSI-/ISO-C++

&pagelevel(4)&pagelevel

Die im Folgenden beschriebenen Erweiterungen werden im C++ 2017-Sprachmodus und im C++ 2020-Sprachmodus akzeptiert, im strikten Sprachmodus allerdings nur, wenn die Option -R strict_errors bzw. ANSI-VIOLATIONS=*ERROR nicht gesetzt ist. Darüber hinaus werden in den C++-Modi auch alle Erweiterungen gegenüber ANSI-/ISO-C unterstützt (siehe Abschnitt „Erweiterungen gegenüber ANSI-/ISO-C“).

  • In der Deklaration eines Klassenelements kann ein qualifizierter Name benutzt werden:

    struct A {
       int A::f(); // laut ANSI int f();
    };
    
  • Im erweiterten C++ 2017 Modus und im erweiterten C++ 2020 Modus gibt es eine implizite Konversion zwischen Funktionen mit "C" und "C++" Linkage:

    extern "C" void f();
    void (*pf)() = &f;
  • Im erweiterten C++ 2017 Modus und im erweiterten C++ 2020 Modus gibt es eine implizite Konversion von einem String-Literal zu dem Typ char* (In C++ 2017 haben String Literale den Typ const char *):

    char *p1 = "abc";
    char *p2 = x ? "abc" : "def";
  • Das Präprozessormakro c_plusplus wird zusätzlich zum standardkonformen Makro __cplusplus definiert. Es wird keine Warnung ausgegeben.