2017-03-02 69 views
2

我一直在試圖找出這個錯誤近一個小時,並有麻煩。我正在閱讀這篇文章:C compile error: Id returned 1 exit status,有人說這可能是因爲該程序仍在運行。我檢查了它,它沒有運行,我仍然得到錯誤。身份證返回1退出狀態錯誤

這是錯誤的樣子: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; 
    } 
+5

那'addNum'實施應主要的'*()'之外*。 – WhozCraig

+1

不是問題,但你的'while'循環永遠不會結束循環 –

+0

而且我很確定錯誤在'ld returned 1'消息之前的某個地方顯示出來 –

回答

3

您收到此錯誤,由於addnum,因爲它是在main函數中定義。 C默認不支持嵌套函數。但是,gcc有一個允許嵌套函數的擴展功能。它們是非標準的,因此完全依賴於編譯器。

這裏是link

相關問題