我继续收到Undefined reference to 'powerOfThree'的错误。 powerOfThree是我的递归方法,如下所示。这是代码:

#include <stdio.h>

int powerOfThree(int);

int main(void){

    int userInput;
    printf("PLease enter a number: "); //asking the user to enter a value
    scanf("%d", &userInput); //store that value into userInput
    printf("the value of %d three to the power is: %d", userInput, powerOfThree(userInput)); //passing the value of userInput into powerOfThree.

int powerOfThree(int n) { //recursion method

    if(n<1) {
        return 1; //control
    }
    else {
        return (3*powerOfThree(n-1)); //actual calculation
    }
}
return (0);


我要求用户输入一个数字并将其存储在userInput中。理论上,我可以将该输入传递给递归方法。

最佳答案

海湾合作委员会有时是一种威胁。

它允许您在其他函数(嵌套函数)中定义函数。您(可能是无意间)将powerOfThree()函数嵌套在main()中。如果将return 0;移到powerOfThree()的开始之前并添加缺少的右括号,则一切将正常进行。

我认为必须先定义嵌套函数,然后才能使用它们。请参见nested functions上的GCC手册-如果您必须在定义前使用auto进行声明,该手册的确允许使用main()进行声明。就目前而言,编译器假定您打算调用之前声明的函数的非嵌套版本。我建议不要使用仅GCC功能(嵌套功能)。

#include <stdio.h>

static int powerOfThree(int);

int main(void)
{
    int userInput;
    printf("Please enter a number: ");
    if (scanf("%d", &userInput) == 1 && userInput >= 0)
    {
        printf("The value of 3 to the power %d is: %d\n",
               userInput, powerOfThree(userInput));
    }
    return (0);
}

static int powerOfThree(int n)
{
    if (n < 1)
        return 1;
    else
        return (3 * powerOfThree(n-1));
}

关于c - 未定义对“powerOfThree”的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52175423/

10-11 15:55