编译器错误 C2601

“function”: 本地函数定义非法

注解

代码尝试在函数中定义函数。

或者,在 C2601 错误的位置之前可能有额外的/缺失大括号。

例子

在函数中定义函数

Lambda 表达式 可用于模拟本地函数的行为:

// 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