本地函数定义是非法的

Local function definition are illegal

本文关键字:非法 定义 函数      更新时间:2023-10-16

所以我在C++中调用函数,因为我对这种语言还很陌生,而且我已经在这个错误上停留了大约 20 分钟,我在任何地方都找不到答案。它不断给我错误:error C2601: 'TimesTwo : local function definitions are illegal,我的Test函数也是如此。

#include <iostream>
using namespace std;
int TimesTwo(int num1);
int Test(int a);
int main()
{
    int TimesTwo(int num1)
    {
        int result;
        result = num1 * 2;
        return result;
    }
    int Test(int a)
    {
        int result;
        int num1;
        cin >> num1;
        result = TimesTwo(num1);
        return result;
    }
    return 0;
}

您在main函数具有TestTestTwo函数。

main例程之外定义函数。

虽然上述本地函数定义是非法的C++但通过 lambda 支持本地函数。以下内容在 C++11 及更高版本中是合法的。

#include <iostream>
using namespace std;
int main()
{
    auto TimesTwo = [](int num1)
    {
        int result;
        result = num1 * 2;
        return result;
    };
    auto Test = [&TimesTwo](int a)
    {
        int result;
        int num1;
        cin >> num1;
        result = TimesTwo(num1);
        return result;
    };
    using fp = int (*)(int);
    fp f1 = TimesTwo; // non-capturing lambda can be converted to function pointer.
    
    return 0;
}

lambda 的一个有用功能是,不捕获任何内容的 lambda 可以转换为函数指针。

只是为了涵盖标题中提到的问题:通常此错误意味着您缺少关闭先前功能的"}"。