Поделиться через


Ошибка компилятора C2601

"function": определения локальных функций являются незаконными

Замечания

Код пытается определить функцию в функции.

Или перед местом ошибки C2601 может возникнуть лишняя или отсутствующая фигурная скобка.

Примеры

Определение функции в функции

Лямбда-выражения можно использовать для эмуляции поведения локальных функций:

// 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);
}

Отсутствует закрывающая скобка

Если предыдущей функции не хватает закрывающей скобки, следующая функция рассматривается за локальную функцию.

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

int main() {}   // C2601