因此我在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;
}
答案 0 :(得分:3)
您的Test
功能内部有TestTwo
和main
功能。
答案 1 :(得分:1)
在main
例程之外定义您的函数。
答案 2 :(得分:0)
虽然上述局部函数定义是非法的,但 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 可以转换为函数指针。