日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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

頭文件中只放那些不產(chǎn)生內(nèi)存占用的代碼,比如定義結(jié)構(gòu)(定義結(jié)構(gòu)不會產(chǎn)生內(nèi)存分配,只有用結(jié)構(gòu)定義變量時才產(chǎn)生內(nèi)存分配)、定義枚舉,定義宏,聲明變量,聲明函數(shù)等。而且大都是1個c文件對應(yīng)1個h文件。下面增加poker.h和player.h(注意main.c是不需要有h文件的,由于我們應(yīng)當(dāng)保證main.c只依賴別的文件,而不能被別的文件依賴),下面我們就把c文件中的結(jié)構(gòu)、宏、枚舉的定義移到對應(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;//牌的點數(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;//玩家分到的牌。每項是1個指針,指向原始1副牌數(shù)組中的1項,這樣可以節(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)、枚舉等移到頭文件中了,而且編譯器不會自動將同名的h文件和c文件關(guān)聯(lián)。其實還不夠,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)志符沖突之類的毛病。如何解決這些毛病呢? 需使用條件編譯指令!

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

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

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲国产精品尤物yw在线观看 | 久久久ww| 中文字幕一二区 | 最近免费中文字幕 | 一区二区日本视频 | www视频在线观看 | 午夜精品久久久久久久久 | 成人福利视频在线 | 免费视频一区二区 | 成人亚洲视频 | 婷婷激情综合网 | 久久成人欧美 | 久久综合九色综合久久久精品综合 | 成人一级毛片 | 欧美日韩综合视频 | 亚洲视频色 | 中文字幕二区丶 | 91亚洲国产精品 | av在线中文 | 一级毛片在线 | 国产精品久久久久久久久久久久久 | 欧美日韩成人在线观看 | 国产精品一区二区三区久久 | 男人操女人视频网站 | 成人免费视频网站 | 疯狂做受xxxx高潮欧美日本 | 9999精品视频 | 亚洲国产91| 欧美亚洲视频 | 亚洲国产精品成人久久久 | 日本黄色电影网址 | 亚洲国产免费 | 亚洲欧美日韩精品 | 99久久99久久精品国产片果冻 | 国产视频在线一区 | 欧美激情视频一区二区三区 | 亚洲电影在线 | 精品久久久久久久久久久久久久久久久 | 亚洲六月丁香色婷婷综合久久 | 国产免费一级特黄录像 | 国产在线精品一区二区在线播放 |