『壹』 C++ 編譯器如何處理頭文件
預處理包括把頭文件的內容在 #include 處展開,也包括處理 #define,當然,還有處理 #if / #ifdef 等等
函數(inline 函數除外)和變數在整個程序中最多隻能定義一次侍睜,程序中用到的函數 / 變數必須被磨碧定義。這被稱作「一處定義原則」(one-definition rule),是C++的基老游歲本規則之一
『貳』 c++頭文件為什麼編譯器不能編譯
因為已經編譯過臘消了。
我們寫的咐姿類有.h和.cpp,但是我們使用衡局絕c++頭文件沒有.cpp,因為他生成了鏈接庫。
『叄』 C/C++ head file與c++ source file在vc編程使用時有什麼區別啊 舉幾個例子可以不
沒旦指有區別!我這樣說可能很多人都不同意,但是head file 和sourefile只是後來人為的分開的,主要是為了方便大型的編程。比如你寫一個很小的hello world程序你的head file 和source file都放起,編譯的時候一起編譯。假如你無聊你可以把它們分開用include<>包含,編譯的時候,編譯器還是會把headfile粘貼到sourcefile前面,再一起編譯,所以說它們答遲廳兩者是沒什麼區別的,只是在人的清隱邏輯上區分,編程時比較有頭緒而已。
『肆』 C語言工程文件連接出錯
首先需要知道,編譯器在編譯的時候是按照源文件為單位進行編譯的,頭文件不參與編譯。並且編譯的時候,源文件之間互相不知道對方的存在。在鏈接階山敏段,進行一些符號的查找等等。另外,一個函數(或變數)可以聲明多次,但只能定義一次。否則就出現了重復定義的錯誤。這里的問題就是查找到了兩個judge()定義。
現在按照樓主的寫法,judge()在judge.h 聲明並定義。雖然逗衡枝judge.hz不參與編譯,但是此文件被judge.cpp和main.cpp兩個頭文件所包含(相當於源文件復制了那個頭文件的內容放在自己的空間中),編攔睜譯器在編譯的時候在judge.obj和main.obj中同時發現了judge()的定義,所以就出錯了。
所以按照樓上的寫法就沒有問題了,而且你也應該知道為什麼沒有問題了吧。
『伍』 為什麼C/C++頭文件單獨編譯會失敗
估計是你編譯器設置不對或者還沒設液好念置,找不到iostream這個文件,程序至少有一個入口,不然也是出錯的
#include<鬧困iostream>
int main(void)
{
return 0;
}
這個是最簡單的了,至襪備少有這個才可以編譯成可執行文件的
『陸』 C++頭文件編譯不了
沒有main函數,培鄭則無法進行編冊中友譯。可在後面州槐加上測試代碼。
int main()
{
return 1;
}
即可,