2016-07-25 585 views
-2

我剛開始學C.但是第一個方案中,我指的書宣稱產生printf的並不在此範圍內

我打字的「printf並沒有在這個範圍內聲明」錯誤代碼完全如書中所示。仍然有錯誤發生。 book

code

+2

請把YK書扔掉..........它對任何程序員都沒有好處。 –

回答

1

編譯器沒有找到printf函數的聲明。這就是爲什麼它顯示編譯錯誤。

正確的聲明(ISO/IEC 9899:1999)printf功能是:

int printf(const char * restrictformat, ...); 

您可以調用前聲明函數像上面也可以包括header file其中包含功能的聲明。 但是,只包含包含函數聲明的頭文件(#include <stdio.h>代碼爲printf)是最簡單和最安全的。

如果你想知道爲什麼你需要在調用函數前提供函數的聲明,你可以看看這個question。解釋如下 -

C編程語言的設計使得編譯器可以作爲單程編譯器來實現。在這樣的編譯器中,每個編譯階段只執行一次。在這樣的編譯器中,您無法將其引用到稍後在源文件中定義的實體。

此外,在C中,編譯器一次只解釋一個編譯單元(通常是.c文件和所有包含的.h文件)。所以你需要一個機制來引用另一個編譯單元中定義的函數。 C中的所有標識符在使用之前都需要聲明。這對功能和變量都是如此。對於函數,聲明需要在函數的第一次調用之前進行。完整聲明包括返回類型和參數的數量和類型。這也被稱爲函數原型。

您也可以在調用同一個編譯單元之前定義一個函數。或者你可以在調用它之前聲明它。包含包含函數聲明的頭文件是更好的主意(並非總是)。

並考慮購買新書。作者應該提到頭文件包含。

7

書是過時的。

添加

#include <stdio.h> 

到您的程序。它提供了printf和許多其他功能的聲明。有關文件中定義的完整功能列表,請查找its documentation

+0

雅我1998年的書是 –

+0

你可以查找函數的man-pages來找出哪個標準頭文件需要'#inc''來獲得一個函數的聲明。您也可以回到http://en.cppreference.com/w/c這樣的在線資源。 –

+1

我不會說這本書已經過時了。書的作者只是假定每個人都知道庫頭,因此沒有明確提及(反覆冗餘)。 – kurakura88

3

printf()stdio.h頭文件中聲明。

添加爲你的程序的第一行:

#include <stdio.h> 
+0

printf未在stdio.h頭文件中定義,它在libc函數 – Ash

+0

中定義。感謝編輯@Mohit – CinCout

1

你必須包含頭文件 「stdio.h中」

2

之初添加

#include<stdio.h> 

.c文件。這是一個頭文件,包含在您編寫的每個c程序中。 stdio.h頭文件包含標準的輸入/輸出函數聲明(如printf和scanf)