c語言中 include stdio h , 的作用是什麼,為什麼不能去掉 ?

時間 2021-07-07 15:36:44

1樓:nullptr

表示這是預處理語句,由預處理器來處理。

至於為啥是#,這就是語法設計的事情了,也可以設計成%%include等等。

C/C++標準已經規定是#開頭了,編譯器都是以檢測這個符號來做判定了,所以你如果想去掉,那麼就要去改C/C++的編譯器,做乙個屬於你自己的編譯器。

2樓:程式設計思維

#號表示這一行後面的語句是預處理語句,而不是C語言的語句。需要在編譯之前完成#號後面的指令。

預處理語句有多種型別。就這一句而言,#include 是檔案包含指令,要求編譯器從預設的或者系統指定的目錄(資料夾)找到stdio.h這個檔案,並且把該檔案的內容插入到當前檔案中,這就完成了include操作(檔案包含)。

為什麼要包含乙個標頭檔案呢?因為標頭檔案中有相關的常量、變數、資料型別和函式原型的說明。只有包含了相關的標頭檔案,使用者才能正確使用相關的常量、變數、資料型別和庫函式。

每條#include語句只能包含乙個標頭檔案。如果有多個標頭檔案,就得分別寫多個#include語句,每行一條#include只語句,每條#include語句也只包含乙個標頭檔案。

例如,我使用的MinGW GCC編譯系統的stdio.h檔案中定義的常量有:

分別定義了為iobuf結構特定的讀寫方式常量_IOREAD, _IOWRT, _IORW,標準輸入流stdin、標準輸出流stdout和標準錯誤輸出流stderr的檔案控制代碼號,以及檔案結束標誌EOF的值。

另外還定義了檔案隨機定位時用到的三個常量:

stdio.h中有許多檔案操作庫函式的函式原型宣告,例如:

也還有輸入輸出庫函式的函式原型宣告,例如:

還有最常用的printf系列函式

預處理語句不是C語言語句,所以預處理語句不是也不能以分號結束。

預處理指令非常重要,沒有相應的指令,我們自己寫的C語言程式就沒有辦法正確引用相應的常量、變數、型別和函式原型。你可以看到上述截圖中的說明是非常複雜和精細的,由我們自己完成相應的宣告非常困難,也沒有必要做這樣的重複勞動。

剛才說了,預處理指令不是C語言語句,必須要和C語言語句能夠區別開來。一條預處理指令問題以#開始,到本行行末(如果沒有續行的話)結束。所以#不能省略。

C 語言為什麼只需要 include stdio h 就能使用裡面宣告的函式

董董 你用的某些函式,比如輸入輸出函式,是類庫里的函式,不是你自己寫的,所以你要告訴計算機你用的這個函式在哪個資料夾中,否則找不到啊。輸入輸出函式是常用函式可以不寫這行包含語句,但是要用到其他函式必須寫 Super桓 實際上不只是stdio,還有另外一些標頭檔案也只需要include而不需要顯示的l...

c語言中,main int main void int main void main 有什麼區別?

PegasusWang 這篇文章講了為什麼void main是錯的,還有main各種寫法。 楊高峰 main 老式的寫法。返回型別int在新型的編譯器不可省略,否者會有警告。int main void 新式的寫法 int main 新式的寫法 void main 老式 不標準的寫法。6.0及之前的V...

C 語言中 main void main 和 int main void 有什麼區別?

Cosmia Fu 為啥沒人用這種形式呢?int main int argc,char argv 我比較喜歡這一種 和int main int argc,char argv,char env Leon int main void 表示返回乙個整數值,不接收任何引數。main 按照老的C語言標準,不寫...