2013-05-11 29 views
0

我很新的編程和定義函數時,我總是收到此錯誤:參數x尚未宣佈

The parameter IPWM_int has not been declared 

沒有爲函數沒有返回類型,但它不會給任何錯誤。

下面是導致問題的功能(這是從main()函數中):

int IntToASCII(IPWM_int) 
{ 
    uint8_t i; 
    for(i=0;i<5;i++) 
    { 
     IPWM_string[i]=0x30; 
    } 

    sprintf(IPWM_string,"%5d", IPWM_int); 

    return 0; 
} 
+1

您應該詳細瞭解如何在C中聲明函數,特別是如何聲明參數。首先,所有參數都需要一個類型,在你的函數中缺少一些東西,以及返回類型。 – 2013-05-11 14:31:27

+0

@JoachimPileborg我剛剛用返回類型編輯我的代碼。我從中複製的代碼也沒有這個參數類型,但它沒有給出任何編譯錯誤? – www 2013-05-11 14:39:11

回答

2

這裏的正確的函數定義大概(基於%d格式符和變量名):

int IntToASCII(int IPWM_int) 

,這個函數的定義可以編譯的唯一方法是,如果它是在ANSI C,並期待這樣的:

int IntToASCII(IPWM_int) 
int IPWM_int; 
{ 
    [...] 

也許這解釋了爲什麼你編譯的代碼適合這個?

+0

謝謝。 int參數解決了這個問題。 – www 2013-05-12 11:34:09

1
int IntToASCII(int IPWM_int) 
      // ^^^ is required at function declaration and definition. 

語法:

return-type functionName(dataType arg1, datatype arg2, ....) 
{ 
    //function body 
} 
2

你需要給參數IPWM_int一個類型。它看起來像你想IPWM_int這裏是參數的名稱,所以如果這個參數是一個int,例如,你會:

int IntToASCII(int IPWM_int) 
{ 
    uint8_t i; 
    for(i=0;i<5;i++) 
    { 
     IPWM_string[i]=0x30; 
    } 

    sprintf(IPWM_string,"%5d", IPWM_int); 

    return 0; 
}