功能取决于另一个功能

时间:2016-02-12 08:28:14

标签: c++ visual-studio function

如何摆脱未找到标识符的错误?

例如:

int step1(int a, int b)
{
    if (b == a)
    {
        cout << "They are the same." << endl;
        return 0;
    }
    else
    {
        step2(a, b);
    }
}

int step2(int a, int b)
{
    if (a > b)
    {
        a = a - b;
        step1(a, b);
    }
    if (b > a)
    {
        b = b - a;
        step1(a, b);
    }
}

int main()
{
    int a = 1;
    int b = 2;
    step1(a, b);
}

如果代码的设置与上面的示例类似,则会出现&#39; step1&#39;运行时错误:找不到标识符,但如果我将step2函数放在step1函数之上,那么运行时错误&#39; step2&#39;:未找到标识符。我如何改变这一点,以便将来不会出现任何错误?

2 个答案:

答案 0 :(得分:1)

请参阅Forward Declaration

您必须在int step2(int a,int b);

之前添加int step1(int a, int b)

在编译期间,当编译器编译step1时,它不知道标识符step2。所以你必须事先声明这个功能。

答案 1 :(得分:1)

您需要在文件顶部提供f2的转发声明 举个例子:

int step2(int a, int b);

int step1(int a, int b)
{
    // your code that uses step2 here
}

int step2(int a, int b)
{
    // your code that uses step1 here
}

int main()
{
    int a = 1;
    int b = 2;
    step1(a, b);
}