auto
Nach oben zu Schlüsselwörter alphabetisch - Index
Das Schlüsselwort auto
wurde für den C++11-Standard neu definiert. Daher unterstützt C++Builder zwei verschiedene Definitionen von auto
entsprechend dem verwendeten Standard des jeweiligen C++-Compilers:
- Die C++98-Definition wird von C++-Compilern der vorherigen Generation (BCC32 und BCCOSX) unterstützt.
- Die C++11-Definition wird von C++-Compilern, die durch Clang erweitert wurden, unterstützt.
Auf dieser Seite sind beide Definitionen von auto
beschrieben.
Inhaltsverzeichnis
C++98-Definition
Kategorie
Syntax
[auto] <data-definition> ;
Beschreibung
Mit dem Modifizierer auto können Sie für eine lokale Variable eine lokale Lebensdauer definieren.
Da dies ist für lokale Variablen die Vorgabe ist, wird dieser Modifizierer selten angegeben.
Beispiel
void f() {
auto int x;
}
C++11-Definition
Kategorie
Syntax
[auto] <variable_name> = <initializer_expression> ;
Beschreibung
Verwenden Sie auto
als einfachen Typ-Bezeichner, dessen Semantik aus dem Initialisierungsausdruck abgeleitet wird.
Beispiel
int f() {
return 1;
}
int _tmain(int argc, _TCHAR* argv[]) {
auto x = f();
return 0;
}
In diesem Beispiel wird der Typ der Variable x
von ihrem Initialisierungsausdruck abgeleitet: f()
. Deshalb hat x
den Typ int, den von f()
zurückgegebenen Typ.
Probleme bei der Codemigration
Wenn C++-Compiler, die durch Clang erweitert wurden, auf alte auto
-Syntax (d.h. auto
wird als Speicherklassenspezifizierer verwendet) treffen, wird die folgende Warnung ausgelöst:
[<compiler> Warning] File1.cpp(12): 'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases.