程序不包含頭文件能編譯通過嗎
MS VC++ 6.0 (甚至5.0) 允許你不包含 頭文件 stdio.h,stdlib.h,編譯器自己會加進去。
但 需要 math.h 時,必須自己加進去,不加,編譯能通過,但數學函數計算結果得數可能錯。
funca() 問題,main.c 把它看成外部函數,鏈接時才需要尋找 funca() 的入口。
CL main.c a.c 編譯能通過,鏈接也能通過。
-------
CL main.c -c
CL a.c -c
CL main.obj a.obj
編譯能通過,鏈接也能通過.
❷ 在C語言中開始不寫頭文件算不算錯,好像不寫程序也能運行
頭文件的目的是提供函數的聲明,這樣編譯器在調用這個函數的地方就可以進行參數檢查,根據聲明信息生成正確的機器指令。如果已經有了這個函數的聲明,比如你所有的函數都是在一個模塊里的,並且被調用的函數的實現都在調用它的函數的前面,當然不寫頭文件也能編譯通過。
把聲明和實現分開,分別寫成頭文件和.c文件的好處是很清晰,別人要用你這個函數只要#include一下就可以了,所以如果是公共模塊,還是寫頭文件好一些。
❸ C語言源程序中若缺少文件包含會則會導致編譯出錯嗎
當然會。例如你使用了某個庫函數卻沒有包含對應的頭文件,編譯器找不到這個函數名是個啥東西、就只好怯生生地對你說:「ERROR……」
❹ 為什麼C程序多文件編譯,沒有導入自己的頭文件也能正常編譯通過
在C中,函數在使用前沒有必要先聲明,會在調用時自動聲明,即使不include stdio.h,程序也可以正常編譯運行。但如果你把Max.c刪除的話會出現連接錯誤。
❺ c語言程序缺少頭文件為什麼還可以運行,並得到正確結果
你用的應該是C++的編譯器,C++對函數申明不做強制要求,如果函數沒有申明,直接使用的話,會給你一個默認申明。
編譯過了之後,連接器是根據函數名稱進行連接,和申明關系不大,所以,連接器也能找到正確的函數進行連接。
但你這個程序,應該會生成一些warning,提示部分函數沒有申明。
❻ 已知單片機程序,沒有程序中的頭文件,有可能寫出來嗎
沒有頭文件單片機內的資源未被申明,不能使用,凡程序中用的這些資源就不能通過編譯。
好在單片機的頭文件不是保密的,您可以找一找。
例如在keil中就在\Keil\C51\INC文件夾中有一些常見單片機的頭文件。
還有就是向單片機製造商索要,例如STC的可向其公司網站查找。
如果知道單片機型號就可以在網上找。
還可以自己寫頭文件,當然這要熟悉單片機才可。
沒有程序中的單片機,就改程序,換用自己熟悉的單片機,這有點難度噢。
❼ 編寫C程序時有時候不加頭文件也能運行,這是為什麼是不是有些頭文件必須得加,而有些不用呢
像#include"stdio.h"
因為包含輸入輸出函數,而且用的比較經常
所以編譯器啟動時就自動包含了
而其他的頭文件,如果你不包含的話,我預計你是運行不了的,因為編譯器只自動包含#include"stdio.h"
譬如上次我沒有包含#include"conio.h",編譯器就無法識別WHITE BLACK等一樣
所以我覺得你要是養成寫頭文件的習慣,對你是有好處的——以防編譯器突然抽風不載入
希望以上對你有幫助
❽ 為什麼在C++中使用string類型不添加頭文件也能編譯成功
樓主,這具體要看你用的是什麼編譯器的,如果你用的是GNU C++編譯器,則會發生編譯錯誤,如果你用的是visual studio C++ 編譯器,則常用的缺失的頭文件會自動補上,不會發生編譯錯誤,但是有的時候VS C++這樣做不是很好而已。
具體還有其他類型的C++編譯器。
❾ 為什麼我在編譯C語言的時候,沒有包括頭文件,也能編譯
IDE或編譯器有可能默認幫你包括了。
❿ C語言 不包含頭文件也能編譯通過
你肯定是用的TC,TC是可以通過的。VC就不行了
這個是編譯器的不同。TC可以自動包含一些預先定好的關鍵字和函數
如果你換成K&R C可能又不能編譯了,哈哈。
