Freigeben über


Compilerfehler C2601

function“: Lokale Funktionsdefinitionen sind nicht zulässig

Bemerkungen

Code versucht, eine Funktion innerhalb einer Funktion zu definieren.

Oder es kann eine zusätzliche/fehlende geschweifte Klammer vor der Position des C2601-Fehlers vorhanden sein.

Beispiele

Definieren einer Funktion innerhalb einer Funktion

Lambda-Ausdrücke können verwendet werden, um das Verhalten lokaler Funktionen zu emulieren:

// C2601a.cpp
int main()
{
    int increment(int value)   // C2601
    {
        return value + 1;
    }

    // Try the following line instead:
    // auto increment = [](int value) { return value + 1; };

    int two = increment(1);
}

Fehlende schließende geschweifte Klammer

Wenn einer vorangehenden Funktion eine schließende geschweifte Klammer fehlt, wird die nachfolgende Funktion als lokale Funktion angesehen.

// C2601b.cpp
void func()
{
// missing '}' brace here

int main() {}   // C2601