Id返回1退出状态错误

时间:2017-03-02 04:05:28

标签: c recursion compiler-errors tail-recursion

我一直试图找出这个错误差不多一个小时而且遇到了麻烦。我正在读这篇文章:C compile error: Id returned 1 exit status有人说这可能是因为该程序仍在运行。我检查过它并没有运行,我仍然得到错误。

这是错误的样子:C:\ Program \ collect2.exe [错误] ld返回1退出状态。

我还查看了更多帖子,其中包含以下答案:Id returned 1 exit status error in my C program,最高回复是“链接器错误”并且程序编译错误。我尝试创建一个新项目并复制代码,但最终得到了同样的错误。然后我进入编译器选项,我拍了选项的截图。这些选项看起来不错吗?

enter image description here

也许它只是我的代码中的一个错误,我忽略了。我必须创建一个尾递归函数来添加数字。例如,用户输入4并且函数添加4 + 3 + 2 + 1以获得10。

我认为错误发生在while循环中的这段代码中:

else{

        printf("Answer = %d \n", addNum(num));  
    }

当我发表评论时,我可以运行它并输入负数或零并获得输出。如果我的程序关闭,因为在函数中输出不正确我不想让你纠正它。我稍后会调整这些内容并为自己找出答案,我只是在找我为什么会收到这个错误。

#include <stdio.h>
#include <stdlib.h>

int addNum(int n);
int main(int argc, char *argv[]) {

    int num;
    int count = 1;


    printf("Enter an integer greater than zero, (q to quit): \n");


    while(count < 3){

        printf("Enter a positive number: \n");
        scanf("%d", &num);

        if(num < 0){

            printf("Enter a positive number: \n");
        }
        else if(num == 0){

            printf("Answer = 0 \n");
        }
        else{

            printf("Answer = %d \n", addNum(num));  
        }


     }


    int addNum(int n){

       int answer; 

       if(n > 0){

          answer = n += addNum(n - 1);  
       }
       return answer;
    }

   return 0;
  }

1 个答案:

答案 0 :(得分:4)

由于在addnum函数中定义的main,您收到此错误。默认情况下,C不支持嵌套函数。但是,gcc具有允许嵌套函数的扩展功能。它们是非标准的,因此完全依赖于编译器。

以下是link