windows程式設計實驗二

2021-07-28 06:04:17 字數 2613 閱讀 8350

1.在c++中,經常會使用#include<>或者#include" "來包含某些標頭檔案,這樣做減少了**的重複冗雜,是非常方便的,但是,不了解其中的奧秘的話,也是非常容易出錯的。所以我們就需要了解兩者不同呼叫的相同點和區別了。

相同:這種使用方法是在編譯前將標頭檔案包含到.cpp檔案裡面,

區別:    #include: 編譯程式會先到標準函式庫中找檔案,即先到預設路徑下尋找,再到當前目錄下尋找。

#include"file"      :  編譯程式會先在當前目錄下尋找該檔案,若未找到,則在標準庫中尋找。

2.在c++中,經常會使用using namespace std,這句話有什麼用呢?沒用不會寫上面的,這是指的使用標準命名空間,std是空間名。c語言中,呼叫了標準庫函式,是使用了全域性的命名空間,所以不需要定義,也就是早期的c++,但是現在c++中使用的時候,標頭檔案中沒有定義全域性命名空間所以要使用自己定義的命名空間,而namespace std 就是微軟幫你定義好的乙個命名空間,直接using就可以了。使用該命名空間時,也就可以呼叫空間中的庫函式,下面是乙個小例子來解釋它:

//宣告
#include"iostream"

usingnamespace

std;

namespace //定義乙個名為test的空間

test

}

//呼叫

#include"stdafx.h" //

標頭檔案預編譯

#include"display.h"    //呼叫標頭檔案

usingnamespace test;  //使用新定義的命名空間

int

main(int argc, _tchar*argv)

3.當進行兩個類的強耦合是,#include"file"容易出錯,這時候就需前置宣告。就像下面的例子一樣:

// a.h  

#include "b.h"  

class a  

;    

#include "a.h"  

a::a(void)  

a::~a(void)  

// b.h  

#include "a.h"  

class b  

;  // b.cpp  

#include "b.h"  

b::b(void)  

b::~b(void)  

當在編譯a.cpp時,系統會先去找到a.h,一起包含道檔案中,再進行編譯,但是在編譯a.h的時候,又需要先去編譯b.h,編譯b.h的時候,又需要去編譯a.h,顯然程式陷入了死迴圈,編譯自然不能通過。當我們進行前置宣告時,**就變成下面這樣了:

// a.h  

class b;  

class a  

;    

#include "b.h"  

#include "a.h"  

a::a(void)  

a::~a(void)  

// b.h  

class a;  

class b  

;  // b.cpp  

#include "a.h"  

#include "b.h"  

b::b(void)  

b::~b(void)  

前置宣告,就是在宣告定義乙個a類的時候,需要使用另乙個b類,我們就可以先宣告乙個b類,而不去具體定義它,只用編譯前讓編譯器知道有這麼乙個類,等到實現a類的時候,再用指標使用b類,例項化物件,呼叫a類方法。b類同是如此。

windows程式設計(二)

本期,我們來通過對話方塊來顯示自己的螢幕水平和豎直方向上的解析度。include include include cdecl 是c declaration的縮寫 declaration,宣告 表示c語言預設的函式呼叫方法 所有引數從右到左依次入棧,這些引數由呼叫者清除,稱為手動清棧。被呼叫函式不會要...

實驗二 基本程式設計

x y z v均為字變數,在x y z v字單元中存放是16位帶符號數。試編寫組合語言程式完成以下功能 1 計算表示式值 v x y z 720 x 2 將上述表示式運算結果整數放在sum1單元,餘數放在sum2單元。stack segment stack dw 512 dup stack ends...

實驗二 基本程式設計

3 在記憶體score緩衝區中存放有100個學生的成績資料,為無符號位元組數。設 計程式完成如下功能 根據使用者輸入的乙個2位十進位制數,作為查詢物件,在該陣列中查詢,若找到則顯示 y 若沒找到則顯示 n stack segment stack dw 512 dup stack ends data ...