Workaround für C++11-Attribute (Durch Clang erweiterte C++-Compiler)
Nach oben zu C++11-Features - Index
Inhaltsverzeichnis
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
};