2012-09-11 73 views
12

我是誰開始學習C一個Linux用戶,我試圖編譯這個源,我打字:警告:返回類型默認爲「詮釋」 [-Wreturn型]

#include <stdio.h> 
main() 
{ 
     float c,d; 
     c = 10215.3; 
     d = c/3; 
     printf("%3.2f\n",d); 
     return 0; 
} 

它編譯這種使用make文件,我寫道:

cc -Wall -g  printf.c -o printf 

,但我得到這樣的警告:

printf.c:2:1:警告:返回類型默認爲 '詮釋'[-Wreturn -類型]

它編譯的代碼,我得到需要的結果,但我想知道這是什麼意思

+0

好的第一個問題,並做好格式化。歡迎! – bohney

回答

15
main() 

應該

int main() 

在C89,默認返回類型假設爲int,這就是它的工作原理。

+0

@DanielFischer不知道。糾正。謝謝! –

+0

工作,沒有任何警告了。我明白我的錯誤。謝謝! – JoshD

+0

沒問題。現在你可以補充說,編譯器默認使用C89的方言,顯然:) –

0

在C89中,默認返回類型是int。在C99中刪除了這個默認設置,編譯器會提醒您,您的C風格沒有intmain()已過期。

見C89規範第3.5.2節 「類型說明符」:

  • 「類型說明符的每個列表應爲以下組之一:[...] + INT簽署,signed int,或沒有類型說明符「。

  • 而在第二段語義:「每個集合指定相同的類型,除了位字段[blabla]」。所以這意味着「沒有類型說明符」與int相同。

在C99中,零件「或無類型說明符」被刪除。 (但你仍然可以寫簽署沒有INT部分。)

相關問題