Workaround für C++11-Attribute (Durch Clang erweiterte C++-Compiler)

Aus RAD Studio
(Weitergeleitet von Workaround für C++0x-Attribute)
Wechseln zu: Navigation, Suche

Nach oben zu C++11-Features - Index


Durch Clang erweiterte C++-Compiler unterstützen nicht die C++11-Attribute deprecated, final (C++) und noreturn, die von den C++-Compilern der vorherigen Generation (BCC32 und BCCOSX) unterstützt werden.

Auf dieser Seite sind Workarounds für die fehlenden Attribute deprecated und final (C++) bei der Verwendung des 64-Bit-C++-Compilers beschrieben. Es gibt kein Workaround für das Attribut noreturn.

Workaround für das Attribut deprecated

Für das Attribut deprecated können Sie als Workaround #pragma obsolete verwenden. Im Folgenden finden Sie ein kurzes Beispiel für eine deprecated-Funktion.

In C++-Compilern der vorherigen Generation:

int f(int a)[[deprecated]]{
    //code here
}

In C++-Compilern, die durch Clang erweitert wurden:

int f(int a){
    #pragma obsolete f
    //code here
}

Workaround für das Attribut final

In C++-Compilern, die durch Clang erweitert wurden, wird das Schlüsselwort final eingeführt, das dieselbe Funktionalität wie das C++11-Attribut final (C++) bereitstellt.

Im Folgenden finden Sie ein kurzes Beispiel für die Verwendung des Schlüsselwortes final.

In C++-Compilern der vorherigen Generation:

class A {
    virtual int f()[[final]];
};

class B : public A {
    int f(); // error, 'f' is marked 'final' and cannot be overridden
};

In C++-Compilern, die durch Clang erweitert wurden:

class A {
    virtual int f() final;
};

class B : public A {
    int f(); //error, declaration of 'f' overrides 'final' function
};

Siehe auch