多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > [置頂] 成為C++高手之頭文件

[置頂] 成為C++高手之頭文件

來(lái)源:程序員人生   發(fā)布時(shí)間:2016-06-24 16:59:32 閱讀次數(shù):2423次

但現(xiàn)在看起來(lái)真不爽,main.c依賴的文件不能在工程中管理,要修改那些文件的話麻煩大了。如何既能分成多個(gè)文件又能在工程中看到呢?可以,使用頭文件(h文件)。

頭文件中只放那些不產(chǎn)生內(nèi)存占用的代碼,比如定義結(jié)構(gòu)(定義結(jié)構(gòu)不會(huì)產(chǎn)生內(nèi)存分配,只有用結(jié)構(gòu)定義變量時(shí)才產(chǎn)生內(nèi)存分配)、定義枚舉,定義宏,聲明變量,聲明函數(shù)等。而且大都是1個(gè)c文件對(duì)應(yīng)1個(gè)h文件。下面增加poker.h和player.h(注意main.c是不需要有h文件的,由于我們應(yīng)當(dāng)保證main.c只依賴別的文件,而不能被別的文件依賴),下面我們就把c文件中的結(jié)構(gòu)、宏、枚舉的定義移到對(duì)應(yīng)的h文件中,然后再將變量和函數(shù)在h文件中增加聲明,因而poker.h和player.h是這樣的:

poker.h:

//1副牌的數(shù)量 #define CARD_COUNT 54 //定義撲克的花色 enum Suit{ heart, spade, diamond, club, joker1, joker2 }; //定義撲克 typedef struct Card{ int value;//牌的點(diǎn)數(shù)從1開始 enum Suit suit;//花色 }Card; //定義比較函數(shù)的類型 typedef int (*COMPARE)(Card* ,Card*); extern Card pokers[CARD_COUNT]; void initOnePack(); char* getCardName(const Card*); Card** shuffle(const Card*); void sort(Card**,int,COMPARE); int compare1(Card* ,Card*); int compare2(Card* ,Card*);

player.h:

//定義玩家 typedef struct Player{ char name[64];//玩家的名字 Card ** cards;//玩家分到的牌。每項(xiàng)是1個(gè)指針,指向原始1副牌數(shù)組中的1項(xiàng),這樣可以節(jié)省空間 int cardsCount;//玩家分到的牌的數(shù)量 }Player; void dispatchCards(Player** ,int ,const Card** );

main.c中不再include poker.c和player.c,而是改成include 頭文件。但是player.c和poker.c中也應(yīng)當(dāng)include各自的頭文件,由于它們用到的結(jié)構(gòu)、枚舉等移到頭文件中了,而且編譯器不會(huì)自動(dòng)將同名的h文件和c文件關(guān)聯(lián)。其實(shí)還不夠,player.h中用到了Card結(jié)構(gòu)的定義,因而player.h依賴poker.h,所以應(yīng)在player.h中include poker.h。但是不幸的是,現(xiàn)在又出現(xiàn)了1大堆毛病,都是1些重定義或標(biāo)志符沖突之類的毛病。如何解決這些毛病呢? 需使用條件編譯指令!

我們看到過(guò)很多以#開頭的令,比如#include、#define等。這些叫做編譯指令。這些不產(chǎn)生實(shí)際的CPU指令,也就是說(shuō)它們不是代碼,但是編譯器跟據(jù)它們處理代碼的生成。這些編譯指令還可使用條件語(yǔ)句來(lái)控制編譯器的動(dòng)作,下面我們就為player.h增加條件編譯指令來(lái)解決重定義毛病。player.h變成了這樣:

#ifndef PLAYER_H #define PLAYER_H #include "poker.h" //定義玩家 typedef struct Player{ char name[64];//玩家的名字 Card ** cards;//玩家分到的牌。每項(xiàng)是1個(gè)指針,指向原始1副牌數(shù)組中的1項(xiàng),這樣可以節(jié)省空間 int cardsCount;//玩家分到的牌的數(shù)量 }Player; void dispatchCards(Player** ,int ,const Card** ); #endif //PLAYER_C

上1篇:成為C++高手之提高可保護(hù)性

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 俺去俺来也www色官网免费的 | 国产精品久久久精品三级 | 精品1区2区3区 | 午夜三级成人三级 | 欧美天天性影院 | 一区二区精品 | www视频在线观看免费 | 男人天堂网2022 | 欧美天堂色 | 性欧美17一18sex性高清播放 | 国产在线不卡 | 国产一级一级片 | 91一区二区三区 | 亚洲高清不卡视频 | 国产偷v国产偷v亚洲偷v | 日韩精品一区二区三区中文 | 99热久久最新地址获6取 | 欧美日韩在线观看免费 | 久久91精品国产一区二区 | 欧美手机手机在线视频一区 | 在线观看视频在线观看 | 成人精品视频 | 美国一级免费 | 中文字幕视频一区二区 | 日韩一级一片 | 欧美成人鲁丝片在线观看 | 国产一区二区免费播放 | www.亚洲成在线 | 91久久人澡人人添人人爽 | 在线播放一区二区三区 | 古代级a毛片可以免费看 | 91精品欧美一区二区综合在线 | 免费va欧美在线观看 | 国产精品第一页在线 | 亚洲免费网 | 欧美精品高清在线观看 | 国产精品第一页爽爽影院 | 性欧美24videos | 国产三级日产三级 | 国产成人永久免费视频 | xxxx69欧美hdxxxhd|