auto

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index


Das Schlüsselwort auto wurde für den C++11-Standard neu definiert. Daher unterstützt Appmethod C++ zwei verschiedene Definitionen von auto entsprechend dem verwendeten Standard des jeweiligen C++-Compilers:

Auf dieser Seite sind beide Definitionen von auto beschrieben.

C++0x-Definition

Kategorie

Speicherklassenspezifizierer

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

Typ-Bezeichner

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.

Siehe auch