1樓:流星夢陽
標頭檔案自始至終不進行編譯,當c++編譯時(即compile時)標頭檔案到原始檔中,對原始檔中的函式和變數進行宣告,編譯正確後產生與原始檔同名擴充套件名為.obj的二進位制檔案,然後鏈結時(即link時)編譯器對生成的二進位制檔案進行連線並生成.exe檔案。
現在的整合開發環境中,如vc6.0中,提供編連(即bulid)是將編譯和連線一鍵化了,但是編譯器還是執行以上2個步驟的。
同理vc自帶的標頭檔案也是這樣,不過是提供了二進位制檔案,在vc++6.0環境下vc98這個目錄下有微軟封裝好的二進位制檔案,微軟提供的函式定義已經編譯了,在我們編譯時,就不在進行編譯了。
你的程式中,當編譯時,會將student.h分別到main.cpp和student.
cpp中,生成main.obj和student.obj(這個是編譯student.
cpp生成的),然後連線兩個obj二進位制檔案,和#include 和#include 微軟提供的函式定義所在的二進位制檔案,是lib副檔名的在vc98這個目錄下,生成乙個exe程式,這樣你所謂的編譯完成!!
2樓:匿名使用者
main.cpp和student.cpp都包含了student.
h的**後編譯生成目標檔案main.obj和student.obj,然後將兩個obj檔案鏈結生成可執行檔案main.
exe,具體的多檔案結構的講解可參考下雞啄公尺部落格上的《雞啄公尺:c++程式設計入門系列之二十四(c++程式設計必知:多檔案結構和編譯預處理命令)》,希望可以幫到你。
3樓:匿名使用者
student是個類啊,student.h是標頭檔案,student.cpp是student這個類的實現。
main主函式裡面用到student這個類了麼。如果**沒錯的話,執行主函式就可以了呀
4樓:匿名使用者
#include到vc安裝目錄下找 iostream這個檔案
#include"stdudent.h"到本工程目錄下找student.h這個檔案。然後編譯student.cpp時,會從先編譯student.h
如何在c++標頭檔案中定義函式,然後在原始檔中使用
5樓:大野瘦子
/*在text。h標頭檔案中進行宣告*/
#include
using namespace std;
void display(int,int);/*使用該函式來實現輸出*/
/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/
#include "text.h"
void display(int x,int y)/*在主函式中進行呼叫函式*/
#include "text.h"
int main()
6樓:匿名使用者
一般為了安全性,只在標頭檔案中進行宣告,而不定義,在其它檔案中進行定義。給你個例子。因為我學了才一年,所以沒法給你說過多的理論,給你兩個例子你好好體會把。
簡單例子實現輸出兩個資料。
/*在text。h標頭檔案中進行宣告*/
#include
using namespace std;
void display(int,int);/*使用該函式來實現輸出*/
/*在texxt。cpp中進行定義,注意第一行,很重要因為不是c++標準庫中的標頭檔案,所以不能用<>,而要用""括起標頭檔案*/
#include "text.h"
void display(int x,int y)
下面這個例子實現類的標頭檔案中宣告,實現2*3矩陣的加法運算,並進行過載輸入輸出流。
在/*matrix。h中宣告*/
#include
class matrix
;/*在matrix。cpp中進行定義*/
#include "matrix.h"
return x;
}istream& operator>>(istream& w,matrix& y)
return w;
}ostream& operator <<(ostream & x,matrix& z)
7樓:匿名使用者
可以在原始檔中新增另乙個原始檔嗎?好像只能新增標頭檔案哦,在c++中。你要程式執行正確,就要建乙個標頭檔案,然後在標頭檔案中宣告函式,當然函式體的定義一般建義是在另乙個原始檔中定義,在另乙個原始檔中定義標頭檔案中宣告的函式時應使用#include語句把頭檔案包含進來才行。
然後你在在主程式中的原始檔中使用#include把頭檔案包含進來就沒錯了,下面舉個例子給你看下。
//標頭檔案hyong.h的內容如下
#ifndef hy //一般在標頭檔案都都使用這種格式以防止標頭檔案在同一檔案中被包含兩次。語名#ifndef hyong…..#endi表示僅當以前沒有使用預處理器編譯指令#define定義的名稱hyong時才處理#ifndef….
#endif之間的語句。
#define hy //在這裡用define定義乙個名字hy,以便在下次訪問到該標頭檔案時,使該名字已經被定義,從而讓程式跳過#ifndef….#endif間的語句。
void g(); //在標頭檔案中宣告乙個函式g();
#endif
//定義標頭檔案中宣告的函式的原始檔hyong.cpp的內容如下
#include "stdafx.h" //注意:在vc++中所有的原始檔中都要包含這條語句。
#include "hyong.h" //將標頭檔案hyong.h包含進來,這裡使用雙引號,而不是引號,以便能更快地檢查到該標頭檔案中定義的名字
#include
using namespace std;
void g() //定義標頭檔案hyong.h中宣告的函式g()
//主程式原始檔ff.cpp的內容如下
#include "stdafx.h"
#include
#include "hyong.h" //注意,主程式和hyong.cpp的檔案中都包含了這個標頭檔案。
using namespace std;
int main()
8樓:
在標頭檔案(如test.h)中定義函式,在同名原始檔(如test.cpp)中寫函式的實現,再寫增加乙個主函式原始檔main.
cpp,同名原始檔與主函式原始檔中包含標頭檔案,標頭檔案中加入巨集定義:
#ifndef test_h__
#define test_h__
#endif //test_h__
51微控制器c語言程式設計標頭檔案的問題
矮子根 不知你是怎麼弄的,我照你的樣式重複了一遍也沒有報錯,請照下圖認真檢查 另外注意 你在兩個檔案裡定義的beep 和 beep 是不一樣的,這才是錯誤的原因。 這個告警是告訴你沒有實現函式吧。你應該把這個函式的主體在.c裡實現。 微控制器的戰鬥機 你看看定義的函式名一樣嗎? 對於c語言的標頭檔案...
C語言程式設計頭檔名是怎樣來選擇的
c語言的頭件就相當於是乙個個函式庫,裡面有已經分好類的各種函式的原型,寫程式時預先載入標頭檔案就相當是先為下列要用到的某個函式定義原型,比如 include int big int,int 建立整型變數函式big void main int big int n1,int n2 使用者自定義函式big...
關於C 標頭檔案中typedef的意思》急急急
例如 typedef int int。就是把int作為int的另乙個 版本 定義整型變數時你可以用int a,也可以用int a,在當前檔案中,它們是一樣的 typedef型別定義,也就是自定義一種新的型別,如typedef int int 則int是一種定義的新型別,它代表的型別為int型。使用t...