2013-06-27 295 views
4
final code2.c:9:1: warning: implicit declaration of function 'choice' is invalid in C99 [-Wimplicit-function-declaration] 
choice(); 
^ 
final code2.c:12:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
choice() 
^~~~~~ 
final code2.c:23:1: warning: implicit declaration of function 'wrong' is invalid in C99 [-  Wimplicit-function-declaration] 
wrong(); 
^ 
final code2.c:25:1: warning: implicit declaration of function 'formula1' is invalid in C99 [-Wimplicit-function-declaration] 
formula1(); 
^ 
final code2.c:27:1: warning: implicit declaration of function 'formula2' is invalid in C99 [-Wimplicit-function-declaration] 
formula2(); 
^ 
final code2.c:29:1: warning: implicit declaration of function 'formula3' is invalid in C99 [-Wimplicit-function-declaration] 
formula3(); 
^ 
final code2.c:30:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 
^ 
final code2.c:32:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
wrong() 
^~~~~ 
final code2.c:35:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 
^ 
final code2.c:37:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
formula1() 
^~~~~~~~ 
final code2.c:47:1: warning: implicit declaration of function 'question' is invalid in C99 [-Wimplicit-function-declaration] 
question(); 
^ 
final code2.c:50:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 
^ 
final code2.c:52:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
formula2() 
^~~~~~~~ 
final code2.c:63:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 
^ 
final code2.c:65:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
formula3() 
^~~~~~~~ 
final code2.c:85:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 
^ 
final code2.c:87:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] 
question() 
^~~~~~~~ 
final code2.c:99:1: warning: control reaches end of non-void function [-Wreturn-type] 
} 

我有這些警告,我一直試圖擺脫我的代碼。 每個警告意味着什麼,什麼是擺脫它們的最佳方式?這些警告意味着什麼C

+1

你可以發佈導致警告的代碼嗎? – Mgetz

+1

您能否提供代碼?這些錯誤非常普遍。 – Lorenz

+0

我認爲這些警告來自這個問題的來源:http://stackoverflow.com/q/17346374/694576 – alk

回答

6

它們表示您沒有爲您的函數聲明返回類型,並且在編譯器爲這些函數添加默認的int返回類型後,您沒有使用return語句。聲明全部爲void,警告消失。

編輯:並且在使用它們之前聲明你的函數,也可以在頭文件中,或者在它們被調用的代碼上面聲明。

+1

這些功能在聲明之前使用 – Oktalist

+0

@Oktalist:好點,編輯。 –

2

看起來你有一個函數選擇(),你沒有給出返回類型。 如果您打算爲它是無效的聲明爲:

void choice(); 
1

你不聲明你的功能,然後再使用它們。 C要求你在使用它們之前聲明函數。通常你把聲明放在一個頭文件中。

壞example.c:

void myFunc() { 
    // This causes an implicit declaration; myTest() has not yet been defined. 
    myTest(); 
} 

void myTest() { 
} 

好example.c:

void myFunc(); 
void myTest(); 

void myFunc() { 
    myTest(); 
} 

void myTest() { 
} 
3

你有一個函數原型,看起來像這樣:

choice(); 

在C89,那很好,它會隱含地變成:

int choice(); 

在C99中,您需要顯式添加返回類型。它也看起來像你打算它是無效的,所以你會想要:

void choice(); 
0

你在聲明它們之前使用函數。包括某些標題可能會丟失。

錯誤消息說明: 隱式函數聲明(僅C和Objective-C) 在聲明之前使用函數時發出警告。在C99模式下(-std = c99或-std = gnu99),默認情況下會啓用此警告,並通過-pedantic-errors將其設置爲錯誤。此警告也由-Wall啓用。