欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++多目錄多文件編譯技巧-創(chuàng)新互聯(lián)

http://www.cplusplus.com/forum/articles/10627/C++多目錄多文件編譯技巧

1.hpp文件

成都網(wǎng)站設(shè)計、做網(wǎng)站的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)一個展示的機(jī)會來證明自己,這并不會花費(fèi)您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。

hpp文件可以使用template函數(shù)和class靜態(tài)函數(shù)(不含靜態(tài)成員)

a)不可包含全局對象和全局函數(shù)
由于hpp本質(zhì)上是作為.h被調(diào)用者include,所以當(dāng)hpp文件中存在全局對象或者全局函數(shù),而該hpp被多個
調(diào)用者include時,將在鏈接時導(dǎo)致符號重定義錯誤。要避免這種情況,需要去除全局對象,將全局函數(shù)封
裝為類的靜態(tài)方法。
b)類之間不可循環(huán)調(diào)用
在.h和.cpp的場景中,當(dāng)兩個類或者多個類之間有循環(huán)調(diào)用關(guān)系時,只要預(yù)先在頭文件做被調(diào)用類的聲明
即可,如下:
class B;
class A{
public:
void someMethod(B b);
};
class B{
public:
void someMethod(A a);
};
在hpp場景中,由于定義與實(shí)現(xiàn)都已經(jīng)存在于一個文件,調(diào)用者必需明確知道被調(diào)用者的所有定義,而不能等到cpp
中去編譯。因此hpp中必須整理類之間調(diào)用關(guān)系,不可產(chǎn)生循環(huán)調(diào)用。同理,對于當(dāng)兩個類A和B分別定義在各自的
hpp文件中,形如以下的循環(huán)調(diào)用也將導(dǎo)致編譯錯誤:
//a.hpp#include "b.hpp"class A{
public:
void someMethod(B b);
};
//b.hpp#include "a.hpp"class B{
public:
void someMethod(A a);
}

c)不可使用靜態(tài)成員
靜態(tài)成員的使用限制在于如果類含有靜態(tài)成員,則在hpp中必需加入靜態(tài)成員初始化代碼,當(dāng)該hpp被多個文檔include時,將產(chǎn)生符號重定義錯誤。

2.

#ifndef MATH_HPP_
#define MATH_HPP_

//內(nèi)容

#endif

3.多個類互相包含使用指針,不要用成員。

網(wǎng)站標(biāo)題:C++多目錄多文件編譯技巧-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://chinadenli.net/article46/ichhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、商城網(wǎng)站網(wǎng)站排名、App設(shè)計、網(wǎng)站建設(shè)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化