锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜老司机精品,久久精品国产欧美激情,欧美视频一区二区三区在线观看http://m.shnenglu.com/tdweng/category/14699.htmlzh-cnWed, 26 Jun 2013 14:40:43 GMTWed, 26 Jun 2013 14:40:43 GMT60Datatype misalignment http://m.shnenglu.com/tdweng/articles/145076.html蹇冪窘蹇冪窘Tue, 26 Apr 2011 11:26:00 GMThttp://m.shnenglu.com/tdweng/articles/145076.htmlhttp://m.shnenglu.com/tdweng/comments/145076.htmlhttp://m.shnenglu.com/tdweng/articles/145076.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/145076.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/145076.htmlhttp://blog.csdn.net/lqk1985/archive/2008/10/23/3129976.aspx

 

瀵逛簬璇誨彇鏁版嵁嫻佹椂錛堝緗戠粶鎴栨枃浠訛級瑕佺壒鍒敞鎰忋?/p>

姣斿

PBYTE pData;

//鎸囧悜鎺ユ敹鍒扮殑鏁版嵁嫻?/p>

int * pi = pData + 榪欐鎺ユ敹鍒版暟鎹祦鐨勫ぇ灝?- 4錛?/p>

//鎸囧悜鎺ユ敹鍒版暟鎹祦鐨勬渶鍚?浣?鍙兘瀹㈡埛绔彂榪囨潵鐨勮繖涓暟鎹祦鏈鍚?浣嶆槸int錛岄偅鏍峰氨鏄榻愬ソ鐨勪簡銆備篃鏈夊彲鑳戒笉鏄痠nt銆?/p>

if *pi = 4561321  endparse data;//鍒ゆ柇浣滀負鏁版嵁嫻佺殑緇撴潫鏍囧織錛屾渶鍚?浣嶇殑鍓嶉潰鍙兘鏄叏鏄痗har鐨勩?/p>

 

鐢變簬榪欐渶鍚?浣嶅彲鑳戒笉鏄痠nt錛岄偅鏍峰氨鏈夊彲鑳戒笉瀵歸綈錛岃繖閲屽氨浼氬嚭鐜癉atatype misalignment閿欒銆備絾鏄垜浠繕鏄繀欏婚氳繃鏈鍚?浣嶄綔涓虹粨鏉熸爣蹇楋紝鑰屽彧鏈夌煡閬撲粈涔堟椂鍊欑粨鏉熸墠鑳界敤int鎸囬拡鎸囧悜鏈鍚?浣嶆墠涓嶄細鍑虹幇瀵歸綈閿欒銆傝繖鏍峰艦鎴愪簡涓涓寰幆錛岄毦閬撴病鍔炴硶瑙e喅浜嗕箞錛?/p>

 

PBYTE pData;

PBYTE * pi = pData + 榪欐鎺ユ敹鍒版暟鎹祦鐨勫ぇ灝?- 4錛?/p>

int i;

memcpy(&i, pi, 4);

if i = 4561321  endparse data;

 

榪欐牱灝卞彲浠ヨВ鍐崇敤int* pi鎸囧悜鏈榻愮殑int閿欒浜嗐?/p>

榪欎竴鎷涘鎵鏈夌鍒癉atatype misalignment鐨勬暟鎹殑璁塊棶搴旇閮芥湁鏁堬紝灝辨槸鎶奃atatype misalignment鐨勬暟鎹敤memcpy鎷瘋礉鍒板榻愮殑鍐呭瓨鏉ヨ闂?/p>

 

 

 

 

1錛岃В鏋愭暟鎹祦鏃跺簲璇ユ椂鍒繪敞鎰忋傚鏋滈渶瑕佹妸涓涓暟鎹祦錛圔UFFER錛夎漿鍖栨垚緇撴瀯榪涜鍙栧鹼紝灝卞簲璇ユ妸榪欎釜緇撴瀯瀹氫箟涓烘寜瀛楄妭瀛樺彇.鑰冭檻濡備笅緇撴瀯錛?/p>

struct a{

char a;
short b;
long c;
};
濡傛灉鏌愪釜鏁版嵁嫻佷腑鍖呭惈榪欐牱鐨勭粨鏋勶紝鑰屼笖鎴戜滑瑕佺洿鎺ュ皢鏁版嵁嫻佺殑鎸囬拡杞寲鎴愯緇撴瀯鐨勬寚閽堬紝鐒跺悗鐩存帴鍙栫粨鏋勬垚鍛樼殑鍊鹼紝鎴戜滑灝卞簲璇ュ皢榪欎釜緇撴瀯瀹氫箟鎴愭寜瀛楄妭璁塊棶錛屽嵆灝嗗叾澶瑰湪璇彞
#pragma pack(push,1)//璁句負1瀛楄妭瀵歸綈
...

#pragma pack(pop)//榪樺師涓哄師鏉ョ殑瀛楄妭瀵歸綈鏂瑰紡
涔嬩腑銆傚鏋滄垜浠笉榪欐牱鍋氾紝緙栬瘧鍣ㄤ細灝嗘垚鍛榖鐨勫湴鍧瀵歸綈鍒皊hort鎸囬拡鐨勫湴鍧錛屽嵆鍦╝涔嬪悗鍔犱笂涓涓猚har鍗?浣嶇殑鎴愬憳錛屽皢C瀵歸綈鍒癓ONG錛屽嵆鍦˙涔嬪悗鍐嶅姞涓涓猚har鎴愬憳銆傚姝や竴鏉ワ紝鎴愬憳B鍜屾垚鍛楥灝卞緱涓嶅埌姝g‘鐨勫間簡銆?/p>

 

 

pragma pack 鍙綔鐢ㄤ簬緇撴瀯鐨勫畾涔夛紝鑰屼笉鏄垎閰嶅唴瀛樼┖闂淬傛妸涓涓粨鏋勫畾涔変負pack1鍚庯紝榪欎釜緇撴瀯鍦ㄧ▼搴忎腑灝變竴鐩存槸1浜嗐?/p>

涓婇潰榪欎釜渚嬪瓙鏄鎴風鍙戦?涓繛緇殑鏁版嵁涓嶆槸鍙戦佺粨鏋勪綋錛屾湇鍔$鎺ユ敹緇撴瀯浣撱?/p>

 

濡傛灉瀹㈡埛绔篃鍙戦佺粨鏋勪綋錛屾湇鍔$涔熸帴鏀剁粨鏋勪綋灝變笉闇瑕佽繖鏍蜂簡銆備絾鏄墠鎻愭槸鍙屾柟鐨勫榻愭柟寮忎竴鑷淬傛墍浠ュ湪瀹㈡埛绔彂閫佸墠涔熻鐢?pragma pack()涓涓嬶紝鏈嶅姟绔篃瑕?pragma pack()涓涓嬨?/p>

 

鏈濂借繕鏄鎴風涔熷崟涓暟鎹彂閫侊紝鏈嶅姟绔篃鍗曚釜鏁版嵁鎺ユ敹銆?/p>

 

濡傛灉鎴戜滑瀹氫箟涓涓櫘閫氱殑緇撴瀯鐢ㄦ潵瀛樻斁涓浜涙暟鎹紝鍒欎笉鐢ㄥ畾涔夋垚鎸夊瓧鑺傚瓨鍙栵紝緙栬瘧鍣ㄤ細鍔犱笂涓浜涘崰浣嶆垚鍛橈紝浣嗗茍涓嶄細褰卞搷紼嬪簭鐨勮繍琛屻備粠榪欎釜鎰忎箟涓婅錛屽湪ARM涓紝灝嗙粨鏋勬垚鍛樺畾涔夋垚CHAR鍜孲HORT鏉ヨ妭綰﹀唴瀛樻槸娌℃湁鎰忎箟鐨勩?/p>

涓涓吀鍨嬬殑渚嬪瓙灝辨枃浠剁郴緇熺殑椹卞姩紼嬪簭錛屾枃浠舵槸浠ヤ竴浜涘凡緇忓畾涔夊ソ鐨勭粨鏋勫瓨鏀懼湪瀛樺偍浠嬭川涓婄殑錛屽畠浠璇誨彇鍒頒竴涓狟UFFER涓紝鑰屽叿浣撳彇鏌愪釜鏂囦歡銆佺洰褰曠粨鏋勬椂錛屾垜浠細灝嗗湴鍧杞寲鎴愮粨鏋勮岃鍙栧叾涓殑鍊箋?/p>


2錛岃闂璁炬椂銆?br>渚嬪錛岀鐩橀┍鍔ㄩ氬父浠?6BIT鐨勬柟寮忓瓨鍙栨暟鎹紝鍗蟲瘡嬈″瓨鍙栦袱涓瓧鑺傦紝榪欐牱灝辮姹備紶緇欏畠鐨凚UFFER鏄弻瀛楄妭瀵歸綈鐨勶紝椹卞姩紼嬪簭搴旇鑷充笂灞備紶鏉ョ殑鎸囬拡鍋氬嚭姝g‘鐨勫鐞嗕互淇濊瘉鏁版嵁鐨勬紜с?/p>


3.鏈夋椂錛屾垜浠病鏈夊皢鏁版嵁嫻佹寚閽堣漿鍖栦負緇撴瀯鎸囬拡鍙栧鹼紝浣嗗鏋滄垜浠鍙栫殑鏄弻瀛楄妭鎴栬呮槸鍥涘瓧鑺傜殑鏁版嵁錛屽悓鏍烽渶瑕佹敞鎰忓榻愮殑闂錛屼緥濡傦紝濡傛灉浠庝竴涓狟UFFER鐨勫亸縐?0澶勮鍙栦竴涓洓瀛楄妭鍊鹼紝鍒欏疄闄呭緱鍒扮殑鍊兼槸鍋忕Щ8澶勭殑
鍦板潃涓婄殑DWORD鍊箋?/p>

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/lqk1985/archive/2008/10/23/3129842.aspx



蹇冪窘 2011-04-26 19:26 鍙戣〃璇勮
]]>
C++鍏抽敭瀛楋細mutable銆乿olatile銆乪xplicit浠ュ強__based http://m.shnenglu.com/tdweng/articles/140928.html蹇冪窘蹇冪窘Tue, 01 Mar 2011 09:32:00 GMThttp://m.shnenglu.com/tdweng/articles/140928.htmlhttp://m.shnenglu.com/tdweng/comments/140928.htmlhttp://m.shnenglu.com/tdweng/articles/140928.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/140928.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/140928.html闃呰鍏ㄦ枃

蹇冪窘 2011-03-01 17:32 鍙戣〃璇勮
]]>
縐諱綅鎿嶄綔http://m.shnenglu.com/tdweng/articles/139160.html蹇冪窘蹇冪窘Sun, 23 Jan 2011 06:53:00 GMThttp://m.shnenglu.com/tdweng/articles/139160.htmlhttp://m.shnenglu.com/tdweng/comments/139160.htmlhttp://m.shnenglu.com/tdweng/articles/139160.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/139160.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/139160.html

鏈榪戠瑪鑰呬竴鐩村湪鍋欽PEG鐨勮В鐮佸伐浣滐紝鍙戠幇鐢ㄥ畬鍏ㄤ嬌鐢ㄥ搱澶浖鏍戣繘琛岃В鐮佹瘮杈冭垂鏃訛紝鑰屼嬌鐢ㄨ〃緇撴瀯瀛樺偍緙栫爜鍜屽肩殑瀵瑰簲鍏崇郴姣旇緝蹇嵎錛屼絾鏄篃瀛樺湪姣旇緝闅懼鐞嗙殑鍦版柟錛屾瘮濡傝В鐮佸伐浣滈氬父鏄互浣嶄負鍗曚綅鐨勬搷浣滐紝榪欓噷蹇呯劧浼氭秹鍙婂埌縐諱綅鎿嶄綔錛岃岀瑪鑰呬箣鍓嶅浣嶇殑鎿嶄綔寰堝皯錛岀粡楠屽緢嬈犵己錛岀粡榪囪繖嬈″巻緇冪粓浜庡彂鐜頒簡涓涓嚜宸辨浘緇忓拷瑙嗙殑涓滆タ錛岄偅灝辨槸C/C++涓殑縐諱綅鎿嶄綔瀹規槗鍑洪敊鐨勬儏鍐點?/p>

1銆佷粈涔堟牱鐨勬暟鎹被鍨嬪彲浠ョ洿鎺ョЩ浣?/strong>

char銆乻hort銆乮nt銆乴ong銆乽nsigned char銆乽nsigned short銆乽nsigned int銆乽nsigned long閮藉彲浠ヨ繘琛岀Щ浣嶆搷浣滐紝鑰宒ouble銆乫loat銆乥ool銆乴ong double鍒欎笉鍙互榪涜縐諱綅鎿嶄綔銆?/p>

2銆佹湁絎﹀彿鏁版嵁綾誨瀷鐨勭Щ浣嶆搷浣?/strong>

瀵逛簬char銆乻hort銆乮nt銆乴ong榪欎簺鏈夌鍙風殑鏁版嵁綾誨瀷錛?/p>

  • 瀵硅礋鏁拌繘琛屽乏縐伙細絎﹀彿浣嶅緇堜負1錛屽叾浠栦綅宸︾Щ
  • 瀵規鏁拌繘琛屽乏縐伙細鎵鏈変綅宸︾Щ錛屽嵆 <<錛屽彲鑳戒細鍙樻垚璐熸暟
  • 瀵硅礋鏁拌繘琛屽彸縐伙細鍙栫粷瀵瑰鹼紝鐒跺悗鍙崇Щ錛屽啀鍙栫浉鍙嶆暟
  • 瀵規鏁拌繘琛屽彸縐伙細鎵鏈変綅鍙崇Щ錛屽嵆 >>

3銆佹棤絎﹀彿鏁版嵁綾誨瀷鐨勭Щ浣嶆搷浣?/strong>

瀵逛簬unsigned char銆乽nsigned short銆乽nsigned int銆乽nsigned long榪欎簺鏃犵鍙鋒暟鎹被鍨嬶細

娌℃湁鐗規畩瑕佽鏄庣殑錛屼嬌鐢?lt;< 鍜?>> 鎿嶄綔絎﹀氨OK浜?/p>

緇撴潫璇?/p>

8086 涓瓨鍦ㄩ昏緫縐諱綅銆佺畻鏈Щ浣嶏紝鑰孋\C++涓殑縐諱綅浼間箮鏃笉鏄昏緫縐諱綅錛屼篃涓嶆槸綆楁湳縐諱綅銆?/p>

姣斿-1錛屾垜浠嫢瀵瑰畠鍙崇Щ1浣嶏紝C鐨勭粨鏋滀粛鏃ф槸-1錛屼簨瀹炰笂鏃犺鍙崇Щ澶氬皯浣嶅緇堟槸-1錛岄昏緫縐諱綅寰楀埌鐨勭粨鏋滐紙8浣嶈〃紺猴級搴旇鏄?128錛屾墍浠ヨ繖鐐硅娉ㄦ剰

渚嬪瓙錛?br>1.灝?13800138000  杞負  91 68 31 08 10 83 00 F0  //91涓? 68鍥藉鍙?涓嶅浣嶉暱浠琛?/strong>

unsigned char *tt = new unsigned char[12];
        strcpy((char*)tt,"13800138000");
        tt[11] = 0xFF;
        unsigned char *ss = new unsigned char[6];
        cout << (tt[11]<<4) << endl;
        memset(ss,0xFF,6);
        int k=0;
        for(int i=0; i<12; i=i+2)
        {
                ss[k++] = (tt[i+1]<<4)+(tt[i]&0x0F);
        }
2. 灝?鏁村艦 杞負 3浣嶅瓧鑺傚瀷16榪涘埗錛屽灝?鏁村瀷 888 杞負 16榪涘埗  00 03 78(Debug涓嬫湁鏁堬紝Release涓嬫棤鏁?
   char param[4] = {0};
    int iParamLen = 888;
    param[0] = iParamLen >> 16;
    param[1] = ((iParamLen >> 8) << 32) >> 32;
    param[2] = (iParamLen << 32) >> 32;

鍙嶄箣

    char param[4] = {0x00,0x03,0x78};
    int ii1 = 0;
    ii1 = param[0];
    ii1 =ii1 << 8;
    ii1 = ii1 | param[1];
    ii1 =ii1 << 8;
    ii1 = ii1 | param[2];


蹇冪窘 2011-01-23 14:53 鍙戣〃璇勮
]]>
BCD鐮併佸崄鍏繘鍒朵笌鍗佽繘鍒朵簰杞?/title><link>http://m.shnenglu.com/tdweng/articles/139022.html</link><dc:creator>蹇冪窘</dc:creator><author>蹇冪窘</author><pubDate>Fri, 21 Jan 2011 06:04:00 GMT</pubDate><guid>http://m.shnenglu.com/tdweng/articles/139022.html</guid><wfw:comment>http://m.shnenglu.com/tdweng/comments/139022.html</wfw:comment><comments>http://m.shnenglu.com/tdweng/articles/139022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tdweng/comments/commentRss/139022.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tdweng/services/trackbacks/139022.html</trackback:ping><description><![CDATA[<p><span onmouseup=NewHighlight(event) class=wenzhang_con id=articlecontent style="WIDTH: 740px"> <div>鍦?font style="BACKGROUND-COLOR: #ffff00">鍋氬祵鍏ュ紡杞歡鐨勮璁′腑錛岀粡甯鎬細閬囧埌鍗佸叚榪涘埗銆丅CD鐮佷笌鍗佽繘鍒朵箣闂寸殑杞崲錛屾渶榪戝仛M1鍗$殑搴旂敤涓紝娑夊強浜嗗ぇ閲忕殑鍗佸叚榪涘埗銆丅CD鐮佷笌鍗佽繘鍒朵箣闂寸殑杞崲銆傜瑪鑰呴氳繃瀵笲CD鐮併佸崄鍏繘鍒?鏉冪殑鐞嗚В錛岃交鏉劇殑瀹炵幇浜嗕粬浠箣闂寸殑浜掓崲銆?/font></div> <div><font style="BACKGROUND-COLOR: #ffff00">#include <stdio.h> <br>#include <string.h</font>> </div> <div>///////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛氫簩榪涘埗鍙栧弽 <br>// <br>//杈撳叆錛歝onst unsigned char *src  浜岃繘鍒舵暟鎹?<br>//      int length                寰呰漿鎹㈢殑浜岃繘鍒舵暟鎹暱搴?<br>// <br>//杈撳嚭錛歶nsigned char *dst        鍙栧弽鍚庣殑浜岃繘鍒舵暟鎹?<br>// <br>//榪斿洖錛?    success <br>// <br>////////////////////////////////////////////////////// <br>int convert(unsigned char *dst, const unsigned char *src, int length) <br>{ <br>        int i; </div> <div>        for(i=0; i<length; i++) <br>        { <br>                dst[i] = src[i]^0xFF; <br>        } <br>        return 0; <br>} </div> <div>////////////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛氬崄鍏繘鍒惰漿涓哄崄榪涘埗 <br>// <br>//杈撳叆錛歝onst unsigned char *hex         寰呰漿鎹㈢殑鍗佸叚榪涘埗鏁版嵁 <br>//      int length                       鍗佸叚榪涘埗鏁版嵁闀垮害 <br>// <br>//杈撳嚭錛?<br>// <br>//榪斿洖錛歩nt  rslt                        杞崲鍚庣殑鍗佽繘鍒舵暟鎹?<br>// <br>//鎬濊礬錛氬崄鍏繘鍒舵瘡涓瓧絎︿綅鎵琛ㄧず鐨勫崄榪涘埗鏁扮殑鑼冨洿鏄? ~255錛岃繘鍒朵負256 <br>//      宸︾Щ8浣?<<8)絳変環涔樹互256 <br>// <br>///////////////////////////////////////////////////////// <br>unsigned long HextoDec(const unsigned char *hex, int length) <br>{ <br>    int i; <br>    unsigned long rslt = 0; </div> <div>    for(i=0; i<length; i++) <br>    { <br>        rslt += (unsigned long)(hex[i])<<(8*(length-1-i)); <br>                                                         <br>    } </div> <div>    return rslt; <br>} </div> <div><br>///////////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛氬崄榪涘埗杞崄鍏繘鍒?<br>// <br>//杈撳叆錛歩nt dec                     寰呰漿鎹㈢殑鍗佽繘鍒舵暟鎹?<br>//      int length                  杞崲鍚庣殑鍗佸叚榪涘埗鏁版嵁闀垮害 <br>// <br>//杈撳嚭錛歶nsigned char *hex          杞崲鍚庣殑鍗佸叚榪涘埗鏁版嵁 <br>// <br>//榪斿洖錛?    success <br>// <br>//鎬濊礬錛氬師鐞嗗悓鍗佸叚榪涘埗杞崄榪涘埗 <br>////////////////////////////////////////////////////////// <br>int DectoHex(int dec, unsigned char *hex, int length) <br>{ <br>    int i; </div> <div>    for(i=length-1; i>=0; i--) <br>    { <br>        hex[i] = (dec%256)&0xFF; <br>        dec /= 256; <br>    } </div> <div>    return 0; <br>} </div> <div>///////////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛氭眰鏉?<br>// <br>//杈撳叆錛歩nt base                    榪涘埗鍩烘暟 <br>//      int times                   鏉冪駭鏁?<br>// <br>//杈撳嚭錛?<br>// <br>//榪斿洖錛歶nsigned long               褰撳墠鏁版嵁浣嶇殑鏉?<br>// <br>////////////////////////////////////////////////////////// <br>unsigned long power(int base, int times) <br>{ <br>    int i; <br>    unsigned long rslt = 1; </div> <div>    for(i=0; i<times; i++) <br>        rslt *= base; </div> <div>    return rslt; <br>} </div> <div>///////////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛欱CD杞?0榪涘埗 <br>// <br>//杈撳叆錛歝onst unsigned char *bcd     寰呰漿鎹㈢殑BCD鐮?<br>//      int length                   BCD鐮佹暟鎹暱搴?<br>// <br>//杈撳嚭錛?<br>// <br>//榪斿洖錛歶nsigned long               褰撳墠鏁版嵁浣嶇殑鏉?<br>// <br>//鎬濊礬錛氬帇緙〣CD鐮佷竴涓瓧絎︽墍琛ㄧず鐨勫崄榪涘埗鏁版嵁鑼冨洿涓? ~ 99,榪涘埗涓?00 <br>//      鍏堟眰姣忎釜瀛楃鎵琛ㄧず鐨勫崄榪涘埗鍊鹼紝鐒跺悗涔樹互鏉?<br>////////////////////////////////////////////////////////// <br>unsigned long  BCDtoDec(const unsigned char *bcd, int length) <br>{ <br>     int i, tmp; <br>     unsigned long dec = 0; </div> <div>     for(i=0; i<length; i++) <br>     { <br>        tmp = ((bcd[i]>>4)&0x0F)*10 + (bcd[i]&0x0F);    <br>        dec += tmp * power(100, length-1-i);           <br>     } </div> <div>     return dec; <br>} </div> <div>///////////////////////////////////////////////////////// <br>// <br>//鍔熻兘錛氬崄榪涘埗杞珺CD鐮?<br>// <br>//杈撳叆錛歩nt Dec                      寰呰漿鎹㈢殑鍗佽繘鍒舵暟鎹?<br>//      int length                   BCD鐮佹暟鎹暱搴?<br>// <br>//杈撳嚭錛歶nsigned char *Bcd           杞崲鍚庣殑BCD鐮?<br>// <br>//榪斿洖錛?  success <br>// <br>//鎬濊礬錛氬師鐞嗗悓BCD鐮佽漿鍗佽繘鍒?<br>// <br>////////////////////////////////////////////////////////// <br>int DectoBCD(int Dec, unsigned char *Bcd, int length) <br>{ <br>     int i; <br>     int temp; </div> <div>     for(i=length-1; i>=0; i--) <br>     { <br>         temp = Dec%100; <br>         Bcd[i] = ((temp/10)<<4) + ((temp%10) & 0x0F); <br>         Dec /= 100; <br>     } </div> <div>     return 0; <br>} </div> <div>int main() <br>{ <br>    register int i; <br>    unsigned char tmp_bff[12] = ""; </div> <div>    //鍗佸叚榪涘埗杞崄榪涘埗 <br>    unsigned char HEX[4] = {0x34, 0xFE, 0x3E, 0xFF}; <br>    unsigned long dec_hex = 0; </div> <div>    dec_hex = HextoDec(HEX, 4); <br>     <br>    printf("dec_hex = %d\n", dec_hex); </div> <div>    //鍗佽繘鍒惰漿鍗佸叚榪涘埗 <br>    DectoHex(dec_hex, tmp_bff, 4); <br>    for(i=0; i<5; i++) <br>    { <br>        printf("tmp_bff[%d] = 0x%02X\n",i, tmp_bff[i]); <br>    } </div> <div>    //BCD鐮佽漿鍗佽繘鍒?<br>    unsigned long dec_bcd = 0; <br>    unsigned char BCD[4] = {0x98, 0x23, 0x45, 0x78}; </div> <div>    dec_bcd = BCDtoDec(BCD, 4); <br>    printf("dec_bcd = %d\n", dec_bcd); </div> <div>    //鍗佽繘鍒惰漿BCD鐮?<br>    DectoBCD(dec_bcd, tmp_bff, 4); <br>    for(i=0; i<5; i++) <br>    { <br>        printf("tmp_bff[%d] = 0x%02X\n", i, tmp_bff[i]); <br>    } </div> <div>    getchar(); <br>} </div> </span><br>BCD <p> </p> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> BCDToChar(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">src,unsigned </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> srcLen, unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">dest)<br>{<br>    unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>    unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> temp2[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">srcLen; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>    {<br>       temp2[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> src[i];<br><br>       temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> src[i]</span><span style="COLOR: #000000">>></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br>       temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">0x0F</span><span style="COLOR: #000000">;<br>       temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0x30</span><span style="COLOR: #000000">;<br><br>       temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp2[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">0x0F</span><span style="COLOR: #000000">;<br>       temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0x30</span><span style="COLOR: #000000">;<br><br>       dest[i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];<br>       dest[i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> temp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br>    }<br>}</span></div> <img src ="http://m.shnenglu.com/tdweng/aggbug/139022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tdweng/" target="_blank">蹇冪窘</a> 2011-01-21 14:04 <a href="http://m.shnenglu.com/tdweng/articles/139022.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Visual C++緙栫▼鍛藉悕瑙勫垯 http://m.shnenglu.com/tdweng/articles/138643.html蹇冪窘蹇冪窘Mon, 17 Jan 2011 02:51:00 GMThttp://m.shnenglu.com/tdweng/articles/138643.htmlhttp://m.shnenglu.com/tdweng/comments/138643.htmlhttp://m.shnenglu.com/tdweng/articles/138643.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/138643.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/138643.html涓銆佺▼搴忛鏍鹼細    
    1銆佷弗鏍奸噰鐢ㄩ樁姊眰嬈$粍緇囩▼搴忎唬鐮侊細    
    鍚勫眰嬈$緝榪涚殑鍒嗘牸閲囩敤VC鐨勭己鐪侀鏍鹼紝鍗蟲瘡灞傛緙╄繘涓?鏍鹼紝鎷彿浣嶄簬涓嬩竴琛屻傝姹傜浉鍖歸厤鐨勫ぇ鎷彿鍦ㄥ悓涓鍒楋紝瀵圭戶琛屽垯瑕佹眰鍐嶇緝榪?鏍箋備緥濡傦細    
    2銆佹彁紺轟俊鎭瓧絎︿覆鐨勪綅緗?/strong>    
    鍦ㄧ▼搴忎腑闇瑕佺粰鍑虹殑鎻愮ず瀛楃涓詫紝涓轟簡鏀寔澶氱璇█鐨勫紑鍙戯紝闄や簡涓浜涚粰璋冭瘯鐢ㄧ殑涓存椂淇℃伅澶栵紝鍏朵粬鎵鏈夌殑鎻愮ず淇℃伅蹇呴』瀹氫箟鍦ㄨ祫婧愪腑銆?nbsp;   
    3銆佸鍙橀噺鐨勫畾涔夛紝灝介噺浣嶄簬鍑芥暟鐨勫紑濮嬩綅緗?/strong>    

浜屻佸懡鍚嶈鍒欙細    
    1銆佸彉閲忓悕鐨勫懡鍚嶈鍒?/strong>    
    鈶犮佸彉閲忕殑鍛藉悕瑙勫垯瑕佹眰鐢?#8220;鍖堢墮鍒╂硶鍒?#8221;銆傚嵆寮澶村瓧姣嶇敤鍙橀噺鐨勭被鍨嬶紝鍏朵綑閮ㄥ垎鐢ㄥ彉閲忕殑鑻辨枃鎰忔濇垨鍏惰嫳鏂囨剰鎬濈殑緙╁啓,灝介噺閬垮厤鐢ㄤ腑鏂囩殑鎷奸煶,瑕佹眰鍗曡瘝鐨勭涓涓瓧姣嶅簲澶у啓銆?nbsp;   
    鍗籌細     鍙橀噺鍚?鍙橀噺綾誨瀷+鍙橀噺鐨勮嫳鏂囨剰鎬濓紙鎴栫緝鍐欙級    
    瀵歸潪閫氱敤鐨勫彉閲忥紝鍦ㄥ畾涔夋椂鍔犲叆娉ㄩ噴璇存槑錛屽彉閲忓畾涔夊敖閲忓彲鑳芥斁鍦ㄥ嚱鏁扮殑寮濮嬪銆?nbsp;   
    瑙佷笅琛細    
    bool(BOOL)     鐢╞寮澶?nbsp;    bIsParent    
    byte(BYTE)     鐢╞y寮澶?nbsp;    byFlag    
    short(int)     鐢╪寮澶?nbsp;    nStepCount    
    long(LONG)     鐢╨寮澶?nbsp;    lSum    
    char(CHAR)     鐢╟寮澶?nbsp;    cCount    
    float(FLOAT)     鐢╢寮澶?nbsp;    fAvg    
    double(DOUBLE)     鐢╠寮澶?nbsp;    dDeta    
    void(VOID)     鐢╲寮澶?nbsp;    vVariant    
    unsigned     int錛圵ORD錛?nbsp;    鐢╳寮澶?nbsp;    wCount    
    unsigned     long(DWORD)     鐢╠w寮澶?nbsp;    dwBroad    
    HANDLE錛圚INSTANCE錛?nbsp;    鐢╤寮澶?nbsp;    hHandle    
    DWORD     鐢╠w寮澶?nbsp;    dwWord    
    LPCSTR(LPCTSTR)     鐢╯tr寮澶?nbsp;    strString    
    鐢?緇撳熬鐨勫瓧絎︿覆     鐢╯z寮澶?nbsp;    szFileName
    
   
    瀵規湭緇欏嚭鐨勫彉閲忕被鍨嬭姹傛彁鍑哄茍緇欏嚭鍛藉悕寤鴻緇欐妧鏈鍛樹細銆?nbsp;   
   
    鈶°佹寚閽堝彉閲忓懡鍚嶇殑鍩烘湰鍘熷垯涓猴細    
    瀵逛竴閲嶆寚閽堝彉閲忕殑鍩烘湰鍘熷垯涓猴細    
    “p”+鍙橀噺綾誨瀷鍓嶇紑+鍛藉悕    
    濡備竴涓猣loat*鍨嬪簲璇ヨ〃紺轟負pfStat    
    瀵瑰閲嶆寚閽堝彉閲忕殑鍩烘湰瑙勫垯涓猴細    
    浜岄噸鎸囬拡錛?nbsp;    “pp”+鍙橀噺綾誨瀷鍓嶇紑+鍛藉悕    
    涓夐噸鎸囬拡錛?nbsp;    “ppp”+鍙橀噺綾誨瀷鍓嶇紑+鍛藉悕    
    ......    
    鈶€佸叏灞鍙橀噺鐢╣_寮澶?濡備竴涓叏灞鐨勯暱鍨嬪彉閲忓畾涔変負g_lFailCount,鍗籌細鍙橀噺鍚?g_+鍙橀噺綾誨瀷+鍙橀噺鐨勮嫳鏂囨剰鎬濓紙鎴栫緝鍐欙級    
    鈶c侀潤鎬佸彉閲忕敤s_寮澶?濡備竴涓潤鎬佺殑鎸囬拡鍙橀噺瀹氫箟涓?span style="COLOR: #008000">s_plPerv_Inst,鍗籌細     鍙橀噺鍚?s_+鍙橀噺綾誨瀷+鍙橀噺鐨勮嫳鏂囨剰鎬濓紙鎴栫緝鍐欙級    
    鈶ゃ佹垚鍛樺彉閲忕敤m_寮澶?濡備竴涓暱鍨嬫垚鍛樺彉閲忓畾涔変負m_lCount;鍗籌細鍙橀噺鍚?m_+鍙橀噺綾誨瀷+鍙橀噺鐨勮嫳鏂囨剰鎬濓紙鎴栫緝鍐欙級    
    鈶ャ佸鏋氫婦綾誨瀷錛坋num錛変腑鐨勫彉閲忥紝瑕佹眰鐢ㄦ灇涓懼彉閲忔垨鍏剁緝鍐欏仛鍓嶇紑銆傚茍涓旇姹傜敤澶у啓銆?nbsp;   
    濡傦細enum     cmEMDAYS    
    {    
    EMDAYS_MONDAY;    
    EMDAYS_TUESDAY;    
    ……    
    };
    
    鈶︺佸struct銆乽nion銆乧lass鍙橀噺鐨勫懡鍚嶈姹傚畾涔夌殑綾誨瀷鐢ㄥぇ鍐欍傚茍瑕佸姞涓婂墠緙錛屽叾鍐呴儴鍙橀噺鐨勫懡鍚嶈鍒欎笌鍙橀噺鍛藉悕瑙勫垯涓鑷淬?nbsp;   
    緇撴瀯涓鑸敤S寮澶?nbsp;   
    濡傦細struct     ScmNPoint    
    {    
    int     nX;//鐐圭殑X浣嶇疆    
    int     nY;     //鐐圭殑Y浣嶇疆    
    };
    
    鑱斿悎浣撲竴鑸敤U寮澶?nbsp;   
    濡?     union     UcmLPoint    
    {    
    long     lX;    
    long     lY;    
    }  
  
    綾諱竴鑸敤C寮澶?nbsp;   
    濡傦細    
    class     CcmFPoint    
    {    
    public:    
    float     fPoint;    
    };    
    瀵逛竴鑸殑緇撴瀯搴旇瀹氫箟涓虹被妯℃澘錛屼負浠ュ悗鐨勬墿灞曟ц冭檻    
    濡傦細    
    template    
    class     CcmTVector3d    
    {    
    public:    
    TYPE     x,y,z;    
    };    
    鈶с佸甯擱噺錛堝寘鎷敊璇殑緙栫爜錛夊懡鍚嶏紝瑕佹眰甯擱噺鍚嶇敤澶у啓錛屽父閲忓悕鐢ㄨ嫳鏂囪〃杈懼叾鎰忔濄?nbsp;   
    濡?span style="COLOR: #008000">錛?define     CM_FILE_NOT_FOUND     CMMAKEHR(0X20B)     鍏朵腑CM琛ㄧず綾誨埆銆?nbsp;   
    鈶ㄣ佸const     鐨勫彉閲忚姹傚湪鍙橀噺鐨勫懡鍚嶈鍒欏墠鍔犲叆c_,鍗籌細c_+鍙橀噺鍛藉悕瑙勫垯錛涗緥濡傦細    
    const     char*     c_szFileName;    
    2銆?nbsp;    鍑芥暟鐨勫懡鍚嶈鑼冿細    
    鍑芥暟鐨勫懡鍚嶅簲璇ュ敖閲忕敤鑻辨枃琛ㄨ揪鍑哄嚱鏁板畬鎴愮殑鍔熻兘銆傞伒寰姩瀹劇粨鏋勭殑鍛藉悕娉曞垯錛屽嚱鏁板悕涓姩璇嶅湪鍓?騫跺湪鍛藉悕鍓嶅姞鍏ュ嚱鏁扮殑鍓嶇紑錛屽嚱鏁板悕鐨勯暱搴︿笉寰楀皯浜?涓瓧姣嶃?nbsp;   
    渚嬪錛?nbsp;   
    long     cmGetDeviceCount(……);    
    3銆佸嚱鏁板弬鏁拌鑼冿細    
    鈶犮?nbsp;    鍙傛暟鍚嶇О鐨勫懡鍚嶅弬鐓у彉閲忓懡鍚嶈鑼冦?nbsp;   
    鈶°?nbsp;    涓轟簡鎻愰珮紼嬪簭鐨勮繍琛屾晥鐜囷紝鍑忓皯鍙傛暟鍗犵敤鐨勫爢鏍堬紝浼犻掑ぇ緇撴瀯鐨勫弬鏁幫紝涓寰嬮噰鐢ㄦ寚閽堟垨寮曠敤鏂瑰紡浼犻掋?nbsp;   
    鈶€?nbsp;    涓轟簡渚夸簬鍏朵粬紼嬪簭鍛樿瘑鍒煇涓寚閽堝弬鏁版槸鍏ュ彛鍙傛暟榪樻槸鍑哄彛鍙傛暟錛屽悓鏃朵究浜庣紪璇戝櫒媯鏌ラ敊璇紝搴旇鍦ㄥ叆鍙e弬鏁板墠鍔犲叆const鏍囧織銆傚錛?nbsp;   
    ……cmCopyString(const     char     *     c_szSource,     char     *     szDest)    
    4銆佸紩鍑哄嚱鏁拌鑼冿細    
    瀵逛簬浠庡姩鎬佸簱寮曞嚭浣滀負浜屾寮鍙戝嚱鏁板叕寮鐨勫嚱鏁幫紝涓轟簡鑳戒笌鍏朵粬鍑芥暟浠ュ強Windows鐨勫嚱鏁板尯鍒嗭紝閲囩敤綾誨埆鍓嶇紑+鍩烘湰鍛藉悕瑙勫垯鐨勬柟娉曞懡鍚嶃備緥濡傦細鍦ㄥ鍔ㄦ佸簱涓紩鍑虹殑涓涓浘璞$紪杈戠殑鍑芥暟瀹氫箟涓?nbsp;    imgFunctionname(鍏朵腑img涓篿mage緙╁啓)銆?nbsp;   
    鐜扮粰鍑轟笁縐嶅簱鐨勫懡鍚嶅墠緙錛?nbsp;   
    鈶犮?nbsp;    瀵歸氱敤鍑芥暟搴擄紝閲囩敤cm涓哄墠緙銆?nbsp;   
    鈶°?nbsp;    瀵逛笁緇村嚱鏁板簱錛岄噰鐢╲r涓哄墠緙銆?nbsp;   
    鈶€?nbsp;    瀵瑰浘璞″嚱鏁板簱錛岄噰鐢╥mg涓哄墠緙銆?/span>    
    瀵瑰畯瀹氫箟錛岀粨鏋滀唬鐮佺敤鍚屾牱鐨勫墠緙銆?nbsp;   
    5銆佹枃浠跺悕(鍖呮嫭鍔ㄦ佸簱銆佺粍浠躲佹帶浠躲佸伐紼嬫枃浠剁瓑)鐨勫懡鍚嶈鑼冿細    
    鏂囦歡鍚嶇殑鍛藉悕瑕佹眰琛ㄨ揪鍑烘枃浠剁殑鍐呭錛岃姹傛枃浠跺悕鐨勯暱搴︿笉寰楀皯浜?涓瓧姣嶏紝涓ョ浣跨敤璞ile1,myfile涔嬬被鐨勬枃浠跺悕銆?nbsp;   

涓夈佹敞閲婅鑼冿細    
    1銆佸嚱鏁板ご鐨勬敞閲?/strong>    
    瀵逛簬鍑芥暟錛屽簲璇ヤ粠“鍔熻兘”錛?#8220;鍙傛暟”錛?#8220;榪斿洖鍊?#8221;銆?#8220;涓昏鎬濊礬”銆?#8220;璋冪敤鏂規硶”銆?#8220;鏃ユ湡”鍏釜鏂歸潰鐢ㄥ涓嬫牸寮忔敞閲婏細    
    //紼嬪簭璇存槑寮濮?nbsp;   
    //================================================================//    
    //     鍔熻兘錛?nbsp;    浠庝竴涓猄tring     涓垹闄ゅ彟涓涓猄tring銆?nbsp;   
    //     鍙傛暟錛?nbsp;    strByDelete,strToDelete    
    //     錛堝叆鍙o級     strByDelete:     琚垹闄ょ殑瀛楃涓詫紙鍘熸潵鐨勫瓧絎︿覆錛?nbsp;   
    //     錛堝嚭鍙o級     strToDelete:     瑕佷粠涓婁釜瀛楃涓蹭腑鍒犻櫎鐨勫瓧絎︿覆銆?nbsp;   
    //     榪斿洖錛?nbsp;    鎵懼埌騫跺垹闄よ繑鍥?錛屽惁鍒欒繑鍥?銆傦紙瀵硅繑鍥炲兼湁閿欒緙栫爜鐨勮//     姹傚垪鍑洪敊璇紪鐮侊級銆?nbsp;   
    //     涓昏鎬濊礬錛氭湰綆楁硶涓昏閲囩敤寰幆姣旇緝鐨勬柟娉曟潵浠巗trByDelete涓壘鍒?nbsp;   
    //     涓巗trToDelete鐩稿尮閰嶇殑瀛楃涓詫紝瀵瑰鍖歸厤strByDelete    
    //     涓湁澶氫釜strToDelete瀛愪覆錛夌殑鎯呭喌娌℃湁澶勭悊銆傝鍙傞槄錛?nbsp;   
    //     涔﹀悕......    
    //     璋冪敤鏂規硶錛?.....    
    //     鏃ユ湡錛氳搗濮嬫棩鏈燂紝濡傦細2000/8/21.9:40--2000/8/23.21:45    
    //================================================================//    
    鍑芥暟鍚?……)    
    //紼嬪簭璇存槑緇撴潫    
    鈶犮?nbsp;    瀵逛簬鏌愪簺鍑芥暟錛屽叾閮ㄥ垎鍙傛暟涓轟紶鍏ュ鹼紝鑰岄儴鍒嗗弬鏁頒負浼犲嚭鍊鹼紝鎵浠ュ鍙傛暟瑕佽緇嗚鏄庤鍙傛暟鏄叆鍙e弬鏁幫紝榪樻槸鍑哄彛鍙傛暟錛屽浜庢煇浜涙剰涔変笉鏄庣‘鐨勫弬鏁拌繕瑕佸仛璇︾粏璇存槑錛堜緥濡傦細浠ヨ搴︿綔涓哄弬鏁版椂錛岃璇存槑璇ヨ搴﹀弬鏁版槸浠ュ姬搴︼紙PI錛?榪樻槸浠ュ害涓哄崟浣嶏級,瀵規棦鏄叆鍙e張鏄嚭鍙g殑鍙橀噺搴旇鍦ㄥ叆鍙e拰鍑哄彛澶勫悓鏃舵爣鏄庛傜瓑絳夈?nbsp;   
    鈶°?nbsp;    鍑芥暟鐨勬敞閲婂簲璇ユ斁緗湪鍑芥暟鐨勫ご鏂囦歡涓紝鍦ㄥ疄鐜版枃浠朵腑鐨勮鍑芥暟鐨勫疄鐜伴儴鍒嗗簲璇ュ悓鏃舵斁緗娉ㄩ噴銆?nbsp;   
    鈶€?nbsp;    鍦ㄦ敞閲婁腑搴旇璇︾粏璇存槑鍑芥暟鐨勪富瑕佸疄鐜版濊礬銆佺壒鍒娉ㄦ槑鑷繁鐨勪竴浜涙兂娉曪紝濡傛灉鏈夊繀瑕佸垯搴旇鍐欐槑瀵規兂娉曚駭鐢熺殑鏉ョ敱銆傚涓浜涙ā浠跨殑鍑芥暟搴旇娉ㄩ噴涓婂嚱鏁扮殑鍑哄銆?nbsp;   
    鈶c?nbsp;    鍦ㄦ敞閲婁腑璇︾粏娉ㄦ槑鍑芥暟鐨勯傚綋璋冪敤鏂規硶錛屽浜庤繑鍥炲肩殑澶勭悊鏂規硶絳夈傚湪娉ㄩ噴涓寮鴻皟璋冪敤鏃剁殑鍗遍櫓鏂歸潰錛屽彲鑳藉嚭閿欑殑鍦版柟銆?nbsp;   
    鈶ゃ?nbsp;    瀵規棩鏈熺殑娉ㄩ噴瑕佹眰璁板綍浠庡紑濮嬪啓鍑芥暟鍒扮粨鏉熷嚱鏁扮殑嫻嬭瘯涔嬮棿鐨勬棩鏈熴?nbsp;   
    鈶ャ?nbsp;    瀵瑰嚱鏁版敞閲婂紑濮嬪埌鍑芥暟鍛藉悕涔嬮棿搴旇鏈変竴緇勭敤鏉ユ爣璇嗙殑鐗規畩瀛楃涓層?nbsp;   
    濡傛灉綆楁硶姣旇緝澶嶆潅錛屾垨綆楁硶涓殑鍙橀噺瀹氫箟涓庝綅緗湁鍏籌紝鍒欒姹傚鍙橀噺鐨勫畾涔夎繘琛屽浘瑙c傚闅句互鐞嗚В鐨勭畻娉曡兘鍥捐В灝介噺鍥捐В銆?nbsp;   
    2銆佸彉閲忕殑娉ㄩ噴錛?/strong>    
    瀵逛簬鍙橀噺鐨勬敞閲婄揣璺熷湪鍙橀噺鐨勫悗闈㈣鏄庡彉閲忕殑浣滅敤銆傚師鍒欎笂瀵逛簬姣忎釜鍙橀噺搴旇娉ㄩ噴錛屼絾瀵逛簬鎰忎箟闈炲父鏄庢樉鐨勫彉閲忥紝濡傦細i,j絳夊驚鐜彉閲忓彲浠ヤ笉娉ㄩ噴銆?nbsp;   
    渚嬪錛?nbsp;    long     lLineCount     //綰跨殑鏍規暟銆?nbsp;   
    銆3銆佹枃浠剁殑娉ㄩ噴錛?/strong>    
    鏂囦歡搴旇鍦ㄦ枃浠跺紑澶村姞鍏ヤ互涓嬫敞閲婏細    
    /////////////////////////////////////////////////////////////////////    
    //     宸ョ▼:     鏂囦歡鎵鍦ㄧ殑欏圭洰鍚嶃?nbsp;   
    //     浣滆咃細**錛屼慨鏀硅咃細**    
    //     鎻忚堪:璇存槑鏂囦歡鐨勫姛鑳姐?nbsp;   
    //     涓昏鍑芥暟錛?#8230;………    
    //     鐗堟湰:     璇存槑鏂囦歡鐨勭増鏈紝瀹屾垚鏃ユ湡銆?nbsp;   
    //     淇敼:     璇存槑瀵規枃浠剁殑淇敼鍐呭銆佷慨鏀瑰師鍥犱互鍙婁慨鏀規棩鏈熴?nbsp;   
    //     鍙傝冩枃鐚細     ......    
    /////////////////////////////////////////////////////////////////////    
    涓轟簡澶存枃浠惰閲嶅鍖呭惈瑕佹眰瀵瑰ご鏂囦歡榪涜瀹氫箟濡備笅:    
    #ifndef     __FILENAME_H__    
    #define     __FILENAME_H__
    
    鍏朵腑FILENAME涓哄ご鏂囦歡鐨勫悕瀛椼?nbsp;   
    銆銆銆4銆佸叾浠栨敞閲婏細    
    鍦ㄥ嚱鏁板唴鎴戜滑涓嶉渶瑕佹敞閲婃瘡涓琛岃鍙ャ備絾蹇呴』鍦ㄥ悇鍔熻兘妯″潡鐨勬瘡涓涓昏閮ㄥ垎涔嬪墠娣誨姞鍧楁敞閲婏紝娉ㄩ噴姣忎竴緇勮鍙ワ紝鍦ㄥ驚鐜佹祦紼嬬殑鍚勫垎鏀瓑錛屽敖鍙兘澶氬姞浠ユ敞閲娿?nbsp;   
    鍏朵腑鐨勫驚鐜佹潯浠躲侀夋嫨絳変綅緗繀欏繪敞閲娿?nbsp;   
    瀵逛簬鍓嶅悗欏哄簭涓嶈兘棰犲掔殑鎯呭喌錛屽緩璁湪娉ㄩ噴涓鍔犲簭鍙楓?nbsp;   
    渚嬪錛?nbsp;   
    鍦ㄥ叾浠栭『搴忔墽琛岀殑紼嬪簭涓紝姣忛殧3鈥?琛岃鍙ワ紝蹇呴』鍔犱竴涓敞閲婏紝娉ㄦ槑榪欎竴孌佃鍙ユ墍緇勬垚鐨勫皬妯″潡鐨勪綔鐢ㄣ傚浜庤嚜宸辯殑涓浜涙瘮杈冪嫭鐗圭殑鎬濇兂瑕佹眰鍦ㄦ敞閲婁腑鏍囨槑銆?nbsp;   

鍥涖佺▼搴忓仴澹э細    
    1銆佸嚱鏁扮殑榪斿洖鍊艱鑼冿細    
    瀵逛簬鍑芥暟鐨勮繑鍥炰綅緗紝灝介噺淇濇寔鍗曚竴鎬э紝鍗充竴涓嚱鏁板敖閲忓仛鍒板彧鏈変竴涓繑鍥炰綅緗?鍗曞叆鍙e崟鍑哄彛)銆?nbsp;   
    瑕佹眰澶у緇熶竴鍑芥暟鐨勮繑鍥炲鹼紝鎵鏈夌殑鍑芥暟鐨勮繑鍥炲奸兘灝嗕互緙栫爜鐨勬柟寮忚繑鍥炪?nbsp;   
    渚嬪緙栫爜瀹氫箟濡備笅錛?nbsp;   
    #define     CM_POINT_IS_NULL     CMMAKEHR(0X200)    
    :    
    :    
    寤鴻鍑芥暟瀹炵幇濡備笅錛?nbsp;   
    long     鍑芥暟鍚?鍙傛暟,……)    
    {    
    long     lResult;     //淇濇寔閿欒鍙?nbsp;   
    lResult=CM_OK;
    
    //濡傛灉鍙傛暟鏈夐敊璇垯榪斿洖閿欒鍙?nbsp;   
    if(鍙傛暟==NULL)    
    {    
    lResult=CM_POINT_IS_NULL;    
    goto     END;    
    }    
    ……    
    END:    
    return     lResult;    
    }
    
    2銆佸叧浜巊oto鐨勫簲鐢細    
    瀵筭oto璇彞鐨勫簲鐢紝鎴戜滑瑕佹眰灝介噺灝戠敤goto璇彞銆傚涓瀹氳鐢ㄧ殑鍦版柟瑕佹眰鍙兘鍚戝悗杞Щ銆?nbsp;   
    3銆佽祫婧愬彉閲忕殑澶勭悊錛堣祫婧愬彉閲忔槸鎸囨秷鑰楃郴緇熻祫婧愮殑鍙橀噺錛夛細    
    瀵硅祫婧愬彉閲忎竴瀹氳祴鍒濆箋傚垎閰嶇殑璧勬簮鍦ㄧ敤瀹屽悗蹇呴』椹笂閲婃斁錛屽茍閲嶆柊璧嬪箋?nbsp;   
    4銆佸澶嶆潅鐨勬潯浠跺垽鏂紝涓轟簡紼嬪簭鐨勫彲璇繪э紝搴旇灝介噺浣跨敤鎷彿銆?nbsp;   
    渚嬶細if(((szFileName!=NULL)&&(lCount>=0)))||(bIsRead==TRUE))    
 
浜斻佸彲縐繪鎬э細    
    1銆侀珮璐ㄩ噺鐨勪唬鐮佽姹傝兘澶熻法騫沖彴錛屾墍浠ユ垜浠殑浠g爜搴旇鑰冭檻鍒板涓嶅悓鐨勫鉤鍙扮殑鏀寔錛岀壒鍒槸瀵箇indows98鍜寃indowsnt鐨勬敮鎸併?nbsp;   
    2銆佺敱浜嶤璇█鐨勭Щ妞嶆ф瘮杈冨ソ錛屾墍浠ュ綆楁硶鍑芥暟瑕佹眰鐢–浠g爜錛屼笉鑳界敤C++浠g爜銆?nbsp;   
    3銆佸涓嶅悓鐨勭‖浠朵笌杞歡鐨勫嚱鏁拌鍋氫笉鍚岀殑澶勭悊
鍖堢墮鍒╁懡鍚嶆硶


MFC銆佸彞鏌勩佹帶浠跺強緇撴瀯鐨勫懡鍚嶈鑼?  Windows綾誨瀷   鏍鋒湰鍙橀噺   MFC綾?  鏍鋒湰鍙橀噺  
HWND   hWnd錛?  CWnd*   pWnd錛? 
HDLG   hDlg錛?  CDialog*   pDlg錛? 
HDC   hDC錛?  CDC*   pDC錛? 
HGDIOBJ   hGdiObj錛?  CGdiObject*   pGdiObj錛? 
HPEN   hPen錛?  CPen*   pPen錛? 
HBRUSH   hBrush錛?  CBrush*   pBrush錛? 
HFONT     hFont錛?    CFont*   pFont錛? 
HBITMAP     hBitmap錛?  CBitmap*   pBitmap錛? 
HPALETTE     hPaltte錛?  CPalette*   pPalette錛? 
HRGN     hRgn錛?  CRgn*   pRgn錛? 
HMENU     hMenu錛?  CMenu*   pMenu錛? 
HWND     hCtl錛?  CState*     pState錛? 
HWND     hCtl錛?  CButton*   pButton錛? 
HWND     hCtl錛?  CEdit*   pEdit錛? 
HWND     hCtl錛?  CListBox*   pListBox錛? 
HWND     hCtl錛?  CComboBox*   pComboBox錛? 
HWND     hCtl錛?  CScrollBar*   pScrollBar錛? 
HSZ     hszStr錛?  CString     pStr錛? 
POINT     pt錛?  CPoint     pt錛? 
SIZE     size錛?  CSize     size錛? 
RECT     rect錛?  CRect     rect錛? 


涓鑸墠緙鍛藉悕瑙勮寖   鍓嶇紑   綾誨瀷   瀹炰緥  
C   綾繪垨緇撴瀯   CDocument錛孋PrintInfo  
m_   鎴愬憳鍙橀噺   m_pDoc錛宮_nCustomers  


鍙橀噺鍛藉悕瑙勮寖   鍓嶇紑   綾誨瀷   鎻忚堪   瀹炰緥  
ch   char   8浣嶅瓧絎?  chGrade  
ch     TCHAR   濡傛灉_UNICODE瀹氫箟錛屽垯涓?6浣嶅瓧絎?  chName  
b   BOOL   甯冨皵鍊?  bEnable  
n     int   鏁村瀷錛堝叾澶у皬渚濊禆浜庢搷浣滅郴緇燂級   nLength  
n     UINT     鏃犵鍙峰鹼紙鍏跺ぇ灝忎緷璧栦簬鎿嶄綔緋葷粺錛?  nHeight  
w     WORD     16浣嶆棤絎﹀彿鍊?  wPos  
l     LONG     32浣嶆湁絎﹀彿鏁村瀷   lOffset  
dw     DWORD     32浣嶆棤絎﹀彿鏁村瀷     dwRange  
p     *     鎸囬拡   pDoc  
lp     FAR*     榪滄寚閽?    lpszName  
lpsz     LPSTR     32浣嶅瓧絎︿覆鎸囬拡   lpszName  
lpsz     LPCSTR     32浣嶅父閲忓瓧絎︿覆鎸囬拡   lpszName  
lpsz     LPCTSTR     濡傛灉_UNICODE瀹氫箟錛屽垯涓?2浣嶅父閲忓瓧絎︿覆鎸囬拡   lpszName  
h     handle     Windows瀵硅薄鍙ユ焺   hWnd  
lpfn     callback   鎸囧悜CALLBACK鍑芥暟鐨勮繙鎸囬拡      


搴旂敤紼嬪簭絎﹀彿鍛藉悕瑙勮寖   鍓嶇紑   絎﹀彿綾誨瀷   瀹炰緥   鑼冨洿  
IDR_     涓嶅悓綾誨瀷鐨勫涓祫婧愬叡浜爣璇?  IDR_MAIINFRAME   1锝?x6FFF  
IDD_   瀵硅瘽妗嗚祫婧?  IDD_SPELL_CHECK     1锝?x6FFF  
HIDD_   瀵硅瘽妗嗚祫婧愮殑Help涓婁笅鏂?  HIDD_SPELL_CHECK     0x20001锝?x26FF  
IDB_     浣嶅浘璧勬簮   IDB_COMPANY_LOGO     1锝?x6FFF  
IDC_   鍏夋爣璧勬簮   IDC_PENCIL     1锝?x6FFF  
IDI_   鍥炬爣璧勬簮   IDI_NOTEPAD     1锝?x6FFF  
ID_   鏉ヨ嚜鑿滃崟欏規垨宸ュ叿鏍忕殑鍛戒護   ID_TOOLS_SPELLING     0x8000锝?xDFFF  
HID_   鍛戒護Help涓婁笅鏂?  HID_TOOLS_SPELLING     0x18000锝?x1DFFF  
IDP_   娑堟伅妗嗘彁紺?  IDP_INVALID_PARTNO     8锝?xDEEF  
HIDP_   娑堟伅妗咹elp涓婁笅鏂?  HIDP_INVALID_PARTNO     0x30008锝?x3DEFF  
IDS_   涓茶祫婧?  IDS_COPYRIGHT     1锝?x7EEF  
IDC_   瀵硅瘽妗嗗唴鐨勬帶浠?  IDC_RECALC     8锝?xDEEF  


Microsoft   MFC瀹忓懡鍚嶈鑼?  鍚嶇О   綾誨瀷  
_AFXDLL   鍞竴鐨勫姩鎬佽繛鎺ュ簱錛圖ynamic   Link   Library錛孌LL錛夌増鏈? 
_ALPHA   浠呯紪璇慏EC   Alpha澶勭悊鍣? 
_DEBUG   鍖呮嫭璇婃柇鐨勮皟璇曠増鏈? 
_MBCS   緙栬瘧澶氬瓧鑺傚瓧絎﹂泦  
_UNICODE   鍦ㄤ竴涓簲鐢ㄧ▼搴忎腑鎵撳紑Unicode  
AFXAPI     MFC鎻愪緵鐨勫嚱鏁? 
CALLBACK   閫氳繃鎸囬拡鍥炶皟鐨勫嚱鏁?   


搴撴爣璇嗙鍛藉悕娉?  鏍囪瘑絎?  鍊煎拰鍚箟  
u     ANSI錛圢錛夋垨Unicode錛圲錛? 
d     璋冭瘯鎴栧彂琛岋細D   =   璋冭瘯錛涘拷鐣ユ爣璇嗙涓哄彂琛屻? 


闈欐佸簱鐗堟湰鍛藉悕瑙勮寖   搴?  鎻忚堪  
NAFXCWD.LIB   璋冭瘯鐗堟湰錛歁FC闈欐佽繛鎺ュ簱  
NAFXCW.LIB   鍙戣鐗堟湰錛歁FC闈欐佽繛鎺ュ簱  
UAFXCWD.LIB   璋冭瘯鐗堟湰錛氬叿鏈塙nicode鏀寔鐨凪FC闈欐佽繛鎺ュ簱
 
UAFXCW.LIB   鍙戣鐗堟湰錛氬叿鏈塙nicode鏀寔鐨凪FC闈欐佽繛鎺ュ簱  


鍔ㄦ佽繛鎺ュ簱鍛藉悕瑙勮寖   鍚嶇О   綾誨瀷  
_AFXDLL   鍞竴鐨勫姩鎬佽繛鎺ュ簱錛圖LL錛夌増鏈?
 
WINAPI     Windows鎵鎻愪緵鐨勫嚱鏁? 


Windows.h涓柊鐨勫懡鍚嶈鑼?  綾誨瀷   瀹氫箟鎻忚堪  
WINAPI   浣跨敤鍦ˋPI澹版槑涓殑FAR   PASCAL浣嶇疆錛屽鏋滄鍦ㄧ紪鍐欎竴涓叿鏈夊鍑篈PI浜哄彛鐐圭殑DLL錛屽垯鍙互鍦ㄨ嚜宸辯殑API涓嬌鐢ㄨ綾誨瀷  
CALLBACK   浣跨敤鍦ㄥ簲鐢ㄧ▼搴忓洖鍙緥紼嬶紝濡傜獥鍙e拰瀵硅瘽妗嗚繃紼嬩腑鐨凢AR   PASCAL鐨勪綅緗? 
LPCSTR   涓嶭PSTR鐩稿悓錛屽彧鏄疞PCSTR鐢ㄤ簬鍙涓叉寚閽堬紝鍏跺畾涔夌被浼鹼紙const   char   FAR*錛? 
UINT   鍙Щ妞嶇殑鏃犵鍙鋒暣鍨嬬被鍨嬶紝鍏跺ぇ灝忕敱涓繪満鐜鍐沖畾錛堝浜嶹indows   NT鍜學indows   9x涓?2浣嶏級錛涘畠鏄痷nsigned   int鐨勫悓涔夎瘝  
LRESULT   紿楀彛紼嬪簭榪斿洖鍊肩殑綾誨瀷  
LPARAM   澹版槑lParam鎵浣跨敤鐨勭被鍨嬶紝lParam鏄獥鍙g▼搴忕殑絎洓涓弬鏁? 
WPARAM   澹版槑wParam鎵浣跨敤鐨勭被鍨嬶紝wParam鏄獥鍙g▼搴忕殑絎笁涓弬鏁? 
LPVOID   涓鑸寚閽堢被鍨嬶紝涓庯紙void   *錛夌浉鍚岋紝鍙互鐢ㄦ潵浠f浛LPSTR    



蹇冪窘 2011-01-17 10:51 鍙戣〃璇勮
]]>
#ifdef __cplusplus 瀛︿範 http://m.shnenglu.com/tdweng/articles/137094.html蹇冪窘蹇冪窘Tue, 21 Dec 2010 01:48:00 GMThttp://m.shnenglu.com/tdweng/articles/137094.htmlhttp://m.shnenglu.com/tdweng/comments/137094.htmlhttp://m.shnenglu.com/tdweng/articles/137094.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/137094.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/137094.html

鏃跺父鍦╟pp鐨勪唬鐮佷箣涓湅鍒拌繖鏍風殑浠g爜:

#ifdef __cplusplus

extern "C" {

#endif

//涓孌典唬鐮?/p>

#ifdef __cplusplus

}

#endif

銆銆榪欐牱鐨勪唬鐮佸埌搴曟槸浠涔堟剰鎬濆憿錛熼鍏堬紝__cplusplus鏄痗pp涓殑鑷畾涔夊畯錛岄偅涔堝畾涔変簡榪欎釜瀹忕殑璇濊〃紺鴻繖鏄竴孌礳pp鐨勪唬鐮侊紝涔熷氨鏄錛屼笂闈㈢殑浠g爜鐨勫惈涔夋槸:濡傛灉榪欐槸涓孌礳pp鐨勪唬鐮侊紝閭d箞鍔犲叆extern "C"{鍜寎澶勭悊鍏朵腑鐨勪唬鐮?/span>銆?/p>

銆銆瑕佹槑鐧戒負浣曚嬌鐢╡xtern "C"錛岃繕寰椾粠cpp涓鍑芥暟鐨勯噸杞藉鐞嗗紑濮嬭璧楓傚湪c++涓紝涓轟簡鏀寔閲嶈澆鏈哄埗錛屽湪緙栬瘧鐢熸垚鐨勬眹緙栫爜涓紝瑕佸鍑芥暟鐨勫悕瀛楄繘琛屼竴浜涘鐞嗭紝鍔犲叆姣斿鍑芥暟鐨勮繑鍥炵被鍨嬬瓑絳?鑰屽湪C涓紝鍙槸綆鍗曠殑鍑芥暟鍚嶅瓧鑰屽凡錛屼笉浼氬姞鍏ュ叾浠栫殑淇℃伅.涔熷氨鏄:C++鍜孋瀵逛駭鐢熺殑鍑芥暟鍚嶅瓧鐨勫鐞嗘槸涓嶄竴鏍風殑.

銆銆姣斿涓嬮潰鐨勪竴孌電畝鍗曠殑鍑芥暟錛屾垜浠湅鐪嬪姞鍏ュ拰涓嶅姞鍏xtern "C"浜х敓鐨勬眹緙栦唬鐮侀兘鏈夊摢浜涘彉鍖?

int f(void)

{

return 1;

}

銆銆鍦ㄥ姞鍏xtern "C"鐨勬椂鍊欎駭鐢熺殑姹囩紪浠g爜鏄?

.file "test.cxx"

.text

.align 2

.globl _f

.def _f; .scl 2; .type 32; .endef

_f:

pushl %ebp

movl %esp錛?%ebp

movl $1錛?%eax

popl %ebp

ret

銆銆浣嗘槸涓嶅姞鍏ヤ簡extern "C"涔嬪悗

.file "test.cxx"

.text

.align 2

.globl __Z1fv

.def __Z1fv; .scl 2; .type 32; .endef

__Z1fv:

pushl %ebp

movl %esp錛?%ebp

movl $1錛?%eax

popl %ebp

ret

銆銆涓ゆ姹囩紪浠g爜鍚屾牱閮芥槸浣跨敤gcc -S鍛戒護浜х敓鐨勶紝鎵鏈夌殑鍦版柟閮芥槸涓鏍風殑錛屽敮鐙槸浜х敓鐨勫嚱鏁板悕錛屼竴涓槸_f錛屼竴涓槸__Z1fv銆?/p>

銆銆鏄庣櫧浜嗗姞鍏ヤ笌涓嶅姞鍏xtern "C"涔嬪悗瀵瑰嚱鏁板悕縐頒駭鐢熺殑褰卞搷錛屾垜浠戶緇垜浠殑璁ㄨ:涓轟粈涔堥渶瑕佷嬌鐢╡xtern "C"鍛紵C++涔嬬埗鍦ㄨ璁++涔嬫椂錛岃冭檻鍒板綋鏃跺凡緇忓瓨鍦ㄤ簡澶ч噺鐨凜浠g爜錛屼負浜嗘敮鎸佸師鏉ョ殑C浠g爜鍜屽凡緇忓啓濂紺搴擄紝闇瑕佸湪C++涓敖鍙兘鐨勬敮鎸丆錛岃宔xtern "C"灝辨槸鍏朵腑鐨勪竴涓瓥鐣ャ?/p>

銆銆璇曟兂榪欐牱鐨勬儏鍐?涓涓簱鏂囦歡宸茬粡鐢–鍐欏ソ浜嗚屼笖榪愯寰楀緢鑹ソ錛岃繖涓椂鍊欐垜浠渶瑕佷嬌鐢ㄨ繖涓簱鏂囦歡錛屼絾鏄垜浠渶瑕佷嬌鐢–++鏉ュ啓榪欎釜鏂扮殑浠g爜銆傚鏋滆繖涓唬鐮佷嬌鐢ㄧ殑鏄疌++鐨勬柟寮忛摼鎺ヨ繖涓狢搴撴枃浠剁殑璇濓紝閭d箞灝變細鍑虹幇閾炬帴閿欒.鎴戜滑鏉ョ湅涓孌典唬鐮?棣栧厛錛屾垜浠嬌鐢–鐨勫鐞嗘柟寮忔潵鍐欎竴涓嚱鏁幫紝涔熷氨鏄鍋囪榪欎釜鍑芥暟褰撴椂鏄敤C鍐欐垚鐨?

//f1.c

extern "C"

{

void f1()

{

return;

}

}

銆銆緙栬瘧鍛戒護鏄?gcc -c f1.c -o f1.o 浜х敓浜嗕竴涓彨f1.o鐨勫簱鏂囦歡銆傚啀鍐欎竴孌典唬鐮佽皟鐢ㄨ繖涓猣1鍑芥暟:

// test.cxx

//榪欎釜extern琛ㄧずf1鍑芥暟鍦ㄥ埆鐨勫湴鏂瑰畾涔夛紝榪欐牱鍙互閫氳繃

//緙栬瘧錛屼絾鏄摼鎺ョ殑鏃跺欒繕鏄渶瑕?/p>

//閾炬帴涓婂師鏉ョ殑搴撴枃浠?

extern void f1();

int main()

{

f1();

return 0;

}

銆銆閫氳繃gcc -c test.cxx -o test.o 浜х敓涓涓彨test.o鐨勬枃浠躲傜劧鍚庯紝鎴戜滑浣跨敤gcc test.o f1.o鏉ラ摼鎺ヤ袱涓枃浠訛紝鍙槸鍑洪敊浜嗭紝閿欒鐨勬彁紺烘槸:

test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'

銆銆涔熷氨鏄錛屽湪緙栬瘧test.cxx鐨勬椂鍊欑紪璇戝櫒鏄嬌鐢–++鐨勬柟寮忔潵澶勭悊f1()鍑芥暟鐨勶紝浣嗘槸瀹為檯涓婇摼鎺ョ殑搴撴枃浠跺嵈鏄敤C鐨勬柟寮忔潵澶勭悊鍑芥暟鐨勶紝鎵浠ュ氨浼氬嚭鐜伴摼鎺ヨ繃涓嶅幓鐨勯敊璇?鍥犱負閾炬帴鍣ㄦ壘涓嶅埌鍑芥暟銆?/p>

銆銆鍥犳錛?span style="COLOR: #ff0000">涓轟簡鍦–++浠g爜涓皟鐢ㄧ敤C鍐欐垚鐨勫簱鏂囦歡錛屽氨闇瑕佺敤extern "C"鏉ュ憡璇夌紪璇戝櫒:榪欐槸涓涓敤C鍐欐垚鐨勫簱鏂囦歡錛岃鐢–鐨勬柟寮忔潵閾炬帴瀹冧滑銆?/span>

銆銆姣斿錛岀幇鍦ㄦ垜浠湁浜嗕竴涓狢搴撴枃浠訛紝瀹冪殑澶存枃浠舵槸f.h錛屼駭鐢熺殑lib鏂囦歡鏄痜.lib錛岄偅涔堟垜浠鏋滆鍦–++涓嬌鐢ㄨ繖涓簱鏂囦歡錛屾垜浠渶瑕佽繖鏍峰啓:

extern "C"

{

#include "f.h"

}

銆銆鍥炲埌涓婇潰鐨勯棶棰橈紝濡傛灉瑕佹敼姝i摼鎺ラ敊璇紝鎴戜滑闇瑕佽繖鏍峰瓙鏀瑰啓test.cxx:

extern "C"

{

extern void f1();

}

int main()

{

f1();

return 0;

}

銆銆閲嶆柊緙栬瘧騫朵笖閾炬帴灝卞彲浠ヨ繃鍘諱簡.

鎬葷粨

C鍜孋++瀵瑰嚱鏁扮殑澶勭悊鏂瑰紡鏄笉鍚岀殑.extern "C"鏄嬌C++鑳藉璋冪敤C鍐欎綔鐨勫簱鏂囦歡鐨勪竴涓墜孌碉紝濡傛灉瑕佸緙栬瘧鍣ㄦ彁紺轟嬌鐢–鐨勬柟寮忔潵澶勭悊鍑芥暟鐨勮瘽錛岄偅涔堝氨瑕佷嬌鐢╡xtern "C"鏉ヨ鏄?/span>銆?/p>

1.寮曡█

C++璇█鐨勫垱寤哄垵琛鋒槸“a better C”錛屼絾鏄繖騫朵笉鎰忓懗鐫C++涓被浼糃璇█鐨勫叏灞鍙橀噺鍜屽嚱鏁版墍閲囩敤鐨勭紪璇戝拰榪炴帴鏂瑰紡涓嶤璇█瀹屽叏鐩稿悓銆備綔涓轟竴縐嶆涓嶤鍏煎鐨勮璦錛孋++淇濈暀浜嗕竴閮ㄥ垎榪囩▼ 寮忚璦鐨勭壒鐐癸紙琚笘浜虹О涓?#8220;涓嶅交搴曞湴闈㈠悜瀵硅薄”錛夛紝鍥犺屽畠鍙互瀹氫箟涓嶅睘浜庝換浣曠被鐨勫叏灞鍙橀噺鍜屽嚱鏁般備絾鏄紝C++姣曠珶鏄竴縐嶉潰鍚戝璞$殑紼嬪簭璁捐璇█錛屼負浜嗘敮鎸佸嚱鏁扮殑閲嶈澆錛孋++瀵瑰叏灞鍑芥暟鐨勫鐞嗘柟寮忎笌C鏈夋槑鏄劇殑涓嶅悓銆?/p>

2.浠庢爣鍑嗗ご鏂囦歡璇磋搗

鏌愪紒涓氭浘緇忕粰鍑哄涓嬬殑涓閬撻潰璇曢錛?/p>

闈㈣瘯棰?/p>

涓轟粈涔堟爣鍑嗗ご鏂囦歡閮芥湁綾諱技浠ヤ笅鐨勭粨鏋勶紵

    #ifndef __INCvxWorksh

    #define __INCvxWorksh

    #ifdef __cplusplus

    extern "C" {

    #endif

    /*...*/

    #ifdef __cplusplus

    }

    #endif

    #endif /* __INCvxWorksh */

鍒嗘瀽

鏄劇劧錛屽ご鏂囦歡涓殑緙栬瘧瀹?#8220;#ifndef __INCvxWorksh銆?define __INCvxWorksh銆?endif” 鐨勪綔鐢ㄦ槸闃叉璇ュご鏂囦歡琚噸澶嶅紩鐢?/span>銆?/p>

閭d箞

    #ifdef __cplusplus

    extern "C" {

    #endif

   #ifdef __cplusplus

    }

    #endif

鐨勪綔鐢ㄥ張鏄粈涔堝憿錛熸垜浠皢鍦ㄤ笅鏂囦竴涓閬撴潵銆?/p>

3.娣卞眰鎻瘑extern "C"

extern "C" 鍖呭惈鍙岄噸鍚箟錛屼粠瀛楅潰涓婂嵆鍙緱鍒幫細棣栧厛錛岃瀹冧慨楗扮殑鐩爣鏄?#8220;extern”鐨勶紱鍏舵錛岃瀹冧慨楗扮殑鐩爣鏄?#8220;C”鐨勩傝鎴戜滑鏉ヨ緇嗚В璇昏繖涓ら噸鍚箟銆?/p>

錛?錛?nbsp;       琚玡xtern "C"闄愬畾鐨勫嚱鏁版垨鍙橀噺鏄痚xtern綾誨瀷鐨?/span>錛?/p>

extern鏄疌/C++璇█涓〃鏄庡嚱鏁板拰鍏ㄥ眬鍙橀噺浣滅敤鑼冨洿錛堝彲瑙佹э級鐨勫叧閿瓧錛岃鍏抽敭瀛楀憡璇夌紪璇戝櫒錛屽叾澹版槑鐨勫嚱鏁板拰鍙橀噺鍙互鍦ㄦ湰妯″潡鎴栧叾瀹冩ā鍧椾腑浣跨敤銆傝浣忥紝涓嬪垪璇彞錛?/p>

extern int a;

浠呬粎鏄竴涓彉閲忕殑澹版槑錛屽叾騫朵笉鏄湪瀹氫箟鍙橀噺a錛屽茍鏈負a鍒嗛厤鍐呭瓨絀洪棿銆傚彉閲廰鍦ㄦ墍鏈夋ā鍧椾腑浣滀負涓縐嶅叏灞鍙橀噺鍙兘琚畾涔変竴嬈★紝鍚﹀垯浼氬嚭鐜拌繛鎺ラ敊璇?/p>

閫氬父錛屽湪妯″潡鐨勫ご鏂囦歡涓鏈ā鍧楁彁渚涚粰鍏跺畠妯″潡寮曠敤鐨勫嚱鏁板拰鍏ㄥ眬鍙橀噺浠ュ叧閿瓧extern澹版槑銆備緥濡傦紝濡傛灉妯″潡B嬈插紩鐢ㄨ妯″潡A涓畾涔夌殑鍏ㄥ眬鍙橀噺鍜?鍑芥暟鏃跺彧闇鍖呭惈妯″潡A鐨勫ご鏂囦歡鍗沖彲銆傝繖鏍鳳紝妯″潡B涓皟鐢ㄦā鍧桝涓殑鍑芥暟鏃訛紝鍦ㄧ紪璇戦樁孌碉紝妯″潡B铏界劧鎵句笉鍒拌鍑芥暟錛屼絾鏄茍涓嶄細鎶ラ敊錛涘畠浼氬湪榪炴帴闃舵涓粠妯″潡 A緙栬瘧鐢熸垚鐨勭洰鏍囦唬鐮佷腑鎵懼埌姝ゅ嚱鏁般?/p>

涓巈xtern瀵瑰簲鐨勫叧閿瓧鏄痵tatic錛岃瀹冧慨楗扮殑鍏ㄥ眬鍙橀噺鍜屽嚱鏁板彧鑳藉湪鏈ā鍧椾腑浣跨敤銆傚洜姝わ紝涓涓嚱鏁版垨鍙橀噺鍙彲鑳借鏈ā鍧椾嬌鐢ㄦ椂錛屽叾涓嶅彲鑳借extern “C”淇グ銆?/p>

錛?錛?nbsp;       琚玡xtern "C"淇グ鐨勫彉閲忓拰鍑芥暟鏄寜鐓璇█鏂瑰紡緙栬瘧鍜岃繛鎺ョ殑錛?/p>

鏈姞extern “C”澹版槑鏃剁殑緙栬瘧鏂瑰紡

棣栧厛鐪嬬湅C++涓綾諱技C鐨勫嚱鏁版槸鎬庢牱緙栬瘧鐨勩?/p>

浣滀負涓縐嶉潰鍚戝璞$殑璇█錛孋++鏀寔鍑芥暟閲嶈澆錛岃岃繃紼嬪紡璇█C鍒欎笉鏀寔銆傚嚱鏁拌C++緙栬瘧鍚庡湪絎﹀彿搴撲腑鐨勫悕瀛椾笌C璇█鐨勪笉鍚屻備緥濡傦紝鍋囪鏌愪釜鍑芥暟鐨勫師鍨嬩負錛?/p>

void foo( int x, int y );

璇ュ嚱鏁拌C緙栬瘧鍣ㄧ紪璇戝悗鍦ㄧ鍙峰簱涓殑鍚嶅瓧涓?span style="COLOR: #008000">_foo錛岃?span style="COLOR: #008000">C++緙栬瘧鍣ㄥ垯浼氫駭鐢熷儚_foo_int_int涔嬬被鐨勫悕瀛楋紙涓嶅悓鐨勭紪璇戝櫒鍙兘鐢熸垚鐨勫悕瀛椾笉鍚岋紝浣嗘槸閮介噰鐢ㄤ簡鐩稿悓鐨勬満鍒訛紝鐢熸垚鐨勬柊鍚嶅瓧縐頒負“mangled name”錛夈俖foo_int_int榪欐牱鐨勫悕瀛楀寘鍚簡鍑芥暟鍚嶃佸嚱鏁板弬鏁版暟閲忓強綾誨瀷淇℃伅錛孋++灝辨槸闈犺繖縐嶆満鍒舵潵瀹炵幇鍑芥暟閲嶈澆鐨勩備緥濡傦紝鍦–++涓紝鍑?鏁皏oid foo( int x, int y )涓巚oid foo( int x, float y )緙栬瘧鐢熸垚鐨勭鍙鋒槸涓嶇浉鍚岀殑錛屽悗鑰呬負_foo_int_float銆?/p>

鍚屾牱鍦幫紝C++涓殑鍙橀噺闄ゆ敮鎸佸眬閮ㄥ彉閲忓錛岃繕鏀寔綾繪垚鍛樺彉閲忓拰鍏ㄥ眬鍙橀噺銆傜敤鎴鋒墍緙栧啓紼嬪簭鐨勭被鎴愬憳鍙橀噺鍙兘涓庡叏灞鍙橀噺鍚屽悕錛屾垜浠互"."鏉ュ尯鍒嗐傝屾湰 璐ㄤ笂錛岀紪璇戝櫒鍦ㄨ繘琛岀紪璇戞椂錛屼笌鍑芥暟鐨勫鐞嗙浉浼鹼紝涔熶負綾諱腑鐨勫彉閲忓彇浜嗕竴涓嫭涓鏃犱簩鐨勫悕瀛楋紝榪欎釜鍚嶅瓧涓庣敤鎴風▼搴忎腑鍚屽悕鐨勫叏灞鍙橀噺鍚嶅瓧涓嶅悓銆?/p>

鏈姞extern "C"澹版槑鏃剁殑榪炴帴鏂瑰紡錛?/span>

鍋囪鍦–++涓紝妯″潡A鐨勫ご鏂囦歡濡備笅錛?/p>

// 妯″潡A澶存枃浠躲moduleA.h

#ifndef MODULE_A_H

        #define MODULE_A_H

     int foo( int x, int y );

#endif

鍦ㄦā鍧桞涓紩鐢ㄨ鍑芥暟錛?/p>

// 妯″潡B瀹炵幇鏂囦歡銆moduleB.cpp

錛僫 nclude "moduleA.h"

foo(2,3);

瀹為檯涓婏紝鍦ㄨ繛鎺ラ樁孌碉紝榪炴帴鍣ㄤ細浠庢ā鍧桝鐢熸垚鐨勭洰鏍囨枃浠秏oduleA.obj涓鎵綺foo_int_int榪欐牱鐨勭鍙鳳紒

鍔爀xtern "C"澹版槑鍚庣殑緙栬瘧鍜岃繛鎺ユ柟寮忥細

鍔爀xtern "C"澹版槑鍚庯紝妯″潡A鐨勫ご鏂囦歡鍙樹負錛?/p>

// 妯″潡A澶存枃浠躲moduleA.h

#ifndef MODULE_A_H

        #define MODULE_A_H

     extern "C" int foo( int x, int y );

#endif

鍦ㄦā鍧桞鐨勫疄鐜版枃浠朵腑浠嶇劧璋冪敤foo( 2,3 )錛屽叾緇撴灉鏄細

錛?錛夋ā鍧桝緙栬瘧鐢熸垚foo鐨勭洰鏍囦唬鐮佹椂錛屾病鏈夊鍏跺悕瀛楄繘琛岀壒孌婂鐞嗭紝閲囩敤浜咰璇█鐨勬柟寮忥紱

錛?錛夎繛鎺ュ櫒鍦ㄤ負妯″潡B鐨勭洰鏍囦唬鐮佸鎵緁oo(2,3)璋冪敤鏃訛紝瀵繪壘鐨勬槸鏈粡淇敼鐨勭鍙峰悕_foo銆?/p>

濡傛灉鍦ㄦā鍧桝涓嚱鏁板0鏄庝簡foo涓篹xtern "C"綾誨瀷錛岃屾ā鍧桞涓寘鍚殑鏄痚xtern int foo( int x, int y ) 錛屽垯妯″潡B鎵句笉鍒版ā鍧桝涓殑鍑芥暟錛涘弽涔嬩害鐒躲?/p>

鎵浠ワ紝鍙互鐢ㄤ竴鍙ヨ瘽姒傛嫭extern “C”榪欎釜澹版槑鐨勭湡瀹炵洰鐨勶紙浠諱綍璇█涓殑浠諱綍璇硶鐗規х殑璇炵敓閮戒笉鏄殢鎰忚屼負鐨勶紝鏉ユ簮浜庣湡瀹炰笘鐣岀殑闇姹傞┍鍔ㄣ傛垜浠湪鎬濊冮棶棰樻椂錛屼笉鑳藉彧鍋滅暀鍦ㄨ繖涓璦鏄庝箞鍋氱殑錛岃繕瑕侀棶涓闂畠涓轟粈涔堣榪欎箞鍋氾紝鍔ㄦ満鏄粈涔堬紝榪欐牱鎴戜滑鍙互鏇存繁鍏ュ湴鐞嗚В璁稿闂錛夛細

瀹炵幇C++涓嶤鍙婂叾瀹冭璦鐨勬販鍚堢紪紼嬨?/p>

鏄庣櫧浜咰++涓璭xtern "C"鐨勮绔嬪姩鏈猴紝鎴戜滑涓嬮潰鏉ュ叿浣撳垎鏋恊xtern "C"閫氬父鐨勪嬌鐢ㄦ妧宸с?/p>

4.extern "C"鐨勬儻鐢ㄦ硶

錛?錛夊湪C++涓紩鐢–璇█涓殑鍑芥暟鍜屽彉閲忥紝鍦ㄥ寘鍚獵璇█澶存枃浠訛紙鍋囪涓篶Example.h錛夋椂錛岄渶榪涜涓嬪垪澶勭悊錛?/p>

extern "C"

{

錛僫 nclude "cExample.h"

}

鑰屽湪C璇█鐨勫ご鏂囦歡涓紝瀵瑰叾澶栭儴鍑芥暟鍙兘鎸囧畾涓篹xtern綾誨瀷錛孋璇█涓笉鏀寔extern "C"澹版槑錛屽湪.c鏂囦歡涓寘鍚簡extern "C"鏃朵細鍑虹幇緙栬瘧璇硶閿欒銆?/p>

絎旇呯紪鍐欑殑C++寮曠敤C鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?/p>

/* c璇█澶存枃浠訛細cExample.h */

#ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c璇█瀹炵幇鏂囦歡錛歝Example.c */

錛僫 nclude "cExample.h"

int add( int x, int y )

{

        return x + y;

}

// c++瀹炵幇鏂囦歡錛岃皟鐢╝dd錛歝ppFile.cpp

extern "C"

{

錛僫 nclude "cExample.h"

}

int main(int argc, char* argv[])

{

        add(2,3);

        return 0;

}

濡傛灉C++璋冪敤涓涓狢璇█緙栧啓鐨?DLL鏃訛紝褰撳寘鎷?DLL鐨勫ご鏂囦歡鎴栧0鏄庢帴鍙e嚱鏁版椂錛屽簲鍔爀xtern "C" {銆}銆?/p>

錛?錛夊湪C涓紩鐢–++璇█涓殑鍑芥暟鍜屽彉閲忔椂錛孋++鐨勫ご鏂囦歡闇娣誨姞extern "C"錛屼絾鏄湪C璇█涓笉鑳界洿鎺ュ紩鐢ㄥ0鏄庝簡extern "C"鐨勮澶存枃浠訛紝搴旇浠呭皢C鏂囦歡涓皢C++涓畾涔夌殑extern "C"鍑芥暟澹版槑涓篹xtern綾誨瀷銆?span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: #000000; TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2">

絎旇呯紪鍐欑殑C寮曠敤C++鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?/p>

//C++澶存枃浠?cppExample.h

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add( int x, int y );

#endif

//C++瀹炵幇鏂囦歡 cppExample.cpp

錛僫 nclude "cppExample.h"

int add( int x, int y )

{

        return x + y;

}

/* C瀹炵幇鏂囦歡 cFile.c

/* 榪欐牱浼氱紪璇戝嚭閿欙細錛僫 nclude "cExample.h" */

extern int add( int x, int y );

int main( int argc, char* argv[] )

{

        add( 2, 3 );   

        return 0;

}

 



蹇冪窘 2010-12-21 09:48 鍙戣〃璇勮
]]>
銆愯漿銆?娣卞叆鍒嗘瀽C++涓璫har * 鍜宑har []鐨勫尯鍒?/title><link>http://m.shnenglu.com/tdweng/articles/136732.html</link><dc:creator>蹇冪窘</dc:creator><author>蹇冪窘</author><pubDate>Fri, 17 Dec 2010 05:59:00 GMT</pubDate><guid>http://m.shnenglu.com/tdweng/articles/136732.html</guid><wfw:comment>http://m.shnenglu.com/tdweng/comments/136732.html</wfw:comment><comments>http://m.shnenglu.com/tdweng/articles/136732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tdweng/comments/commentRss/136732.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tdweng/services/trackbacks/136732.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS"><span id="hvzpftn" class=Title><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">闂寮曞叆錛?br></span></span>鍦ㄥ疄涔犺繃紼嬩腑鍙戠幇浜嗕竴涓互鍓嶄竴鐩撮粯璁ょ殑閿欒錛屽悓鏍穋har *c = "abc"鍜宑har c[]="abc",鍓嶈呮敼鍙樺叾鍐?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">瀹圭▼搴忔槸浼氬穿婧冪殑錛岃屽悗鑰呭畬鍏ㄦ紜?br>紼嬪簭婕旂ず錛?br>嫻嬭瘯鐜Devc++<br>浠g爜<br></span><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">榪愯緇撴灉<br>2293628 4199056 abc<br>2293624 2293624 abc<br>2293620 4199056 abc</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">#include <iostream><br>using namespace std;</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">main()<br>{<br>char *c1 = "abc";<br>char c2[] = "abc";<br>char *c3 = ( char* )malloc(3);<br>c3 = "abc";<br>printf("%d %d %s\n",&c1,c1,c1);<br>printf("%d %d %s\n",&c2,c2,c2);<br>printf("%d %d %s\n",&c3,c3,c3);<br>getchar();<br>}<br></span></p> <br> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍙傝冭祫鏂欙細<br>棣栧厛瑕佹悶娓呮緙栬瘧紼嬪簭鍗犵敤鐨勫唴瀛樼殑鍒嗗尯褰㈠紡錛?br>涓銆侀澶囩煡璇?紼嬪簭鐨勫唴瀛樺垎閰?br>涓涓敱c/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎<br>1銆佹爤鍖猴紙stack錛?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鏁版嵁緇撴瀯涓殑鏍堛?br>2銆佸爢鍖猴紙heap錛?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹銆傛敞鎰忓畠涓庢暟鎹?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">緇撴瀯涓殑鍫嗘槸涓ゅ洖浜嬶紝鍒嗛厤鏂瑰紡鍊掓槸綾諱技浜庨摼琛紝鍛靛懙銆?br>3銆佸叏灞鍖猴紙闈欐佸尯錛夛紙static錛?鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍙橀噺鍦ㄤ竴鍧楀尯鍩燂紝鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴傜▼搴忕粨鏉熷悗鐢辯郴緇?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">閲婃斁銆?br>4銆佹枃瀛楀父閲忓尯-甯擱噺瀛楃涓插氨鏄斁鍦ㄨ繖閲岀殑銆傜▼搴忕粨鏉熷悗鐢辯郴緇熼噴鏀俱?br>5銆佺▼搴忎唬鐮佸尯<br>榪欐槸涓涓墠杈堝啓鐨勶紝闈炲父璇︾粏<br><span id="hvzpftn" class=Code><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">//main.cpp<br>int a=0; //鍏ㄥ眬鍒濆鍖栧尯<br>char *p1; //鍏ㄥ眬鏈垵濮嬪寲鍖?br>main()<br>{<br>int b;鏍?br>char s[]="abc"; //鏍?br>char *p2; //鏍?br>char *p3="123456"; //123456\0鍦ㄥ父閲忓尯錛宲3鍦ㄦ爤涓娿?br>static int c=0錛?//鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯<br>p1 = (char*)malloc(10);<br>p2 = (char*)malloc(20); //鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒?br>strcpy(p1,"123456"); //123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鍚?123456"浼樺寲鎴愪竴涓?/span></span></span><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍦版柟銆?br>}<br>浜屻佸爢鍜屾爤鐨勭悊璁虹煡璇?br>2.1鐢寵鏂瑰紡<br>stack:<br>鐢辯郴緇熻嚜鍔ㄥ垎閰嶃備緥濡傦紝澹版槑鍦ㄥ嚱鏁頒腑涓涓眬閮ㄥ彉閲廼nt b;緋葷粺鑷姩鍦ㄦ爤涓負b寮杈熺┖闂?br>heap:<br>闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟<br>濡俻1=(char*)malloc(10);<br>鍦–++涓敤new榪愮畻絎?br>濡俻2=(char*)malloc(10);<br>浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪鏍堜腑鐨勩?br>2.2<br>鐢寵鍚庣郴緇熺殑鍝嶅簲<br>鏍堬細鍙鏍堢殑鍓╀綑絀洪棿澶т簬鎵鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず鏍堟孩鍑恒?br>鍫嗭細棣栧厛搴旇鐭ラ亾鎿嶄綔緋葷粺鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝<br>浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃涓垹闄わ紝騫跺皢</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨勯鍦板潃澶勮褰曟湰嬈″垎閰嶇殑澶?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">灝忥紝榪欐牱錛屼唬鐮佷腑鐨刣elete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆傚彟澶栵紝鐢變簬鎵懼埌鐨勫爢緇撶偣鐨勫ぇ灝忎笉涓瀹氭</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮ㄥ垎閲嶆柊鏀懼叆絀洪棽閾捐〃涓?br>2.3鐢寵澶у皬鐨勯檺鍒?br>鏍堬細鍦╓indows涓?鏍堟槸鍚戜綆鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰鎬濇槸鏍堥《鐨勫湴</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍧鍜屾爤鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝鏍堢殑澶у皬鏄?M錛堜篃鏈夌殑璇存槸1M錛屾諱箣鏄竴涓紪璇?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鏃跺氨紜畾鐨勫父鏁幫級錛屽鏋滅敵璇風殑絀洪棿瓚呰繃鏍堢殑鍓╀綑絀洪棿鏃訛紝灝嗘彁紺簅verflow銆傚洜姝わ紝鑳戒粠鏍堣幏寰楃殑絀洪棿</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">杈冨皬銆?br>鍫嗭細鍫嗘槸鍚戦珮鍦板潃鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍鐨勭┖闂插唴瀛樺湴</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆傚爢鐨勫ぇ灝忓彈闄愪簬璁$畻鏈虹郴緇熶腑鏈夋晥鐨?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">铏氭嫙鍐呭瓨銆傜敱姝ゅ彲瑙侊紝鍫嗚幏寰楃殑絀洪棿姣旇緝鐏墊椿錛屼篃姣旇緝澶с?br>2.4鐢寵鏁堢巼鐨勬瘮杈冿細<br>鏍?鐢辯郴緇熻嚜鍔ㄥ垎閰嶏紝閫熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?br>鍫?鏄敱new鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究.<br>鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤Virtual Alloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦ㄥ爢錛屼篃涓嶆槸鍦ㄦ爤,鑰屾槸鐩存帴鍦ㄨ繘</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">紼嬬殑鍦板潃絀洪棿涓繚鐣欎竴鍧楀唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?br>2.5鍫嗗拰鏍堜腑鐨勫瓨鍌ㄥ唴瀹?br>鏍堬細鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘鏍堢殑鏄富鍑芥暟涓悗鐨勪笅涓鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲鎵ц璇彞錛夌殑</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆鏍堢殑錛岀劧鍚庢槸鍑芥暟涓殑灞閮ㄥ彉</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆鏍堢殑銆?br>褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑烘爤錛岀劧鍚庢槸鍙傛暟錛屾渶鍚庢爤欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴鍧錛屼篃灝辨槸涓?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍑芥暟涓殑涓嬩竴鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻?br>鍫嗭細涓鑸槸鍦ㄥ爢鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀懼爢鐨勫ぇ灝忋傚爢涓殑鍏蜂綋鍐呭鐢辯▼搴忓憳瀹夋帓銆?br>2.6瀛樺彇鏁堢巼鐨勬瘮杈?br>char s1[]="aaaaaaaaaaaaaaa";<br>char *s2="bbbbbbbbbbbbbbbbb";<br>aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛?br>鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱<br>浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪鏍堜笂鐨勬暟緇勬瘮鎸囬拡鎵鎸囧悜鐨勫瓧絎︿覆(渚嬪鍫?蹇?br>姣斿錛?br><span id="hvzpftn" class=Code>#include<br>voidmain()<br>{<br>char a=1;<br>char c[]="1234567890";<br>char *p="1234567890";<br>a = c[1];<br>a = p[1];<br>return;<br>}<br></span>瀵瑰簲鐨勬眹緙栦唬鐮?br>10:a=c[1];<br>004010678A4DF1movcl,byteptr[ebp-0Fh]<br>0040106A884DFCmovbyteptr[ebp-4],cl<br>11:a=p[1];<br>0040106D8B55ECmovedx,dwordptr[ebp-14h]<br>004010708A4201moval,byteptr[edx+1]<br>004010738845FCmovbyteptr[ebp-4],al<br>絎竴縐嶅湪璇誨彇鏃剁洿鎺ュ氨鎶婂瓧絎︿覆涓殑鍏冪礌璇誨埌瀵勫瓨鍣╟l涓紝鑰岀浜岀鍒欒鍏堟妸鎸囬拡鍊艱鍒癳dx涓紝鍦ㄦ牴鎹?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">edx璇誨彇瀛楃錛屾樉鐒舵參浜嗐?br>2.7灝忕粨錛?br>鍫嗗拰鏍堢殑鍖哄埆鍙互鐢ㄥ涓嬬殑姣斿柣鏉ョ湅鍑猴細<br>浣跨敤鏍堝氨璞℃垜浠幓楗閲屽悆楗紝鍙鐐硅彍錛堝彂鍑虹敵璇鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨璧幫紝涓嶅繀鐞嗕細</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜鐢卞害灝忋?br>浣跨敤鍫嗗氨璞℃槸鑷繁鍔ㄦ墜鍋氬枩嬈㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄瘮杈冪鍚堣嚜宸辯殑鍙e懗錛岃屼笖鑷敱搴﹀ぇ銆?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鑷垜鎬葷粨錛?br>char *c1 = "abc";瀹為檯涓婂厛鏄湪鏂囧瓧甯擱噺鍖哄垎閰嶄簡涓鍧楀唴瀛樻斁"abc",鐒跺悗鍦ㄦ爤涓婂垎閰嶄竴鍦板潃緇檆1騫舵寚鍚?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">榪欏潡鍦板潃錛岀劧鍚庢敼鍙樺父閲?abc"鑷劧浼氬穿婧?/span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">鐒惰宑har c2[] = "abc",瀹為檯涓奱bc鍒嗛厤鍐呭瓨鐨勫湴鏂瑰拰涓婅呭茍涓嶄竴鏍鳳紝鍙互浠?br>4199056<br>2293624 鐪嬪嚭錛屽畬鍏ㄦ槸涓ゅ潡鍦版柟錛屾帹鏂?199056澶勪簬甯擱噺鍖猴紝鑰?293624澶勪簬鏍堝尯</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">2293628<br>2293624<br>2293620 榪欐杈撳嚭鐪嬪嚭涓変釜鎸囬拡鍒嗛厤鐨勫尯鍩熶負鏍堝尯錛岃屼笖鏄粠楂樺湴鍧鍒頒綆鍦板潃</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">2293620 4199056 abc 鐪嬪嚭緙栬瘧鍣ㄥ皢c3浼樺寲鎸囧悜甯擱噺鍖虹殑"abc"</span></p> <p><br><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">緇х畫鎬濊冿細<br>浠g爜錛?br></span><br><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">杈撳嚭錛?br>2293628 4199056 abc<br>2293624 2293624 abc<br>2293620 4012976 gbc<br>鍐欐垚娉ㄩ噴閭f牱錛屽悗闈㈡敼鍔ㄥ氨浼氬穿婧?br>鍙strcpy(c3,"abc");abc鏄彟涓鍧楀湴鏂瑰垎閰嶇殑錛岃屼笖鍙互鏀瑰彉錛屽拰涓婇潰鐨勫弬鑰冩枃妗h娉曟湁浜涗笉涓瀹氾紝</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">#include <iostream><br>using namespace std;</span></p> <p><span style="FONT-SIZE: 1em; COLOR: #003366; FONT-FAMILY: Comic Sans MS">main()<br>{<br>char *c1 = "abc";<br>char c2[] = "abc";<br>char *c3 = ( char* )malloc(3);<br>// *c3 = "abc" //error<br>strcpy(c3,"abc");<br>c3[0] = 'g';<br>printf("%d %d %s\n",&c1,c1,c1);<br>printf("%d %d %s\n",&c2,c2,c2);<br>printf("%d %d %s\n",&c3,c3,c3);<br>getchar();<br>}</span></p> <img src ="http://m.shnenglu.com/tdweng/aggbug/136732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tdweng/" target="_blank">蹇冪窘</a> 2010-12-17 13:59 <a href="http://m.shnenglu.com/tdweng/articles/136732.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>EVC縐繪鍒癡C鎬葷粨http://m.shnenglu.com/tdweng/articles/134141.html蹇冪窘蹇冪窘Sat, 20 Nov 2010 02:42:00 GMThttp://m.shnenglu.com/tdweng/articles/134141.htmlhttp://m.shnenglu.com/tdweng/comments/134141.htmlhttp://m.shnenglu.com/tdweng/articles/134141.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/134141.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/134141.html2.link -->output Entry-point symbol:wWinMainCRTStartup (鏀寔鍙屽瓧鑺?
3.璧勬簮鍙互鐩存帴鎷瘋繃鏉?鐢╒C鎵撳紑eVC鐨勮祫婧愭枃浠?rc),鐒跺悗eVC鐨勮祫婧愬氨浼氬嚭鐜癡C
鍦ㄥ彸渚?鐢ㄩ紶鏍囨嫋鍒癡C鐨勮祫婧愪腑灝卞彲浠?
4.鍏朵粬灝辨槸涓浜涚粏鑺傞棶棰樹簡.鍙互鐢ㄥ畯鍒ゆ柇,鏄笉鏄痚VC鐨勭▼搴?濡傛灉鏄庝箞澶勭悊,涓嶆槸鐨勮瘽,灝辯敤VC鐨勫鐞嗘柟寮?br>#ifdef _WIN32_WCE
#endif


蹇冪窘 2010-11-20 10:42 鍙戣〃璇勮
]]>
鍩烘湰鏁版嵁綾誨瀷錛氬瓧絎﹀瀷錛堜笂錛?http://m.shnenglu.com/tdweng/articles/133122.html蹇冪窘蹇冪窘Tue, 09 Nov 2010 13:23:00 GMThttp://m.shnenglu.com/tdweng/articles/133122.htmlhttp://m.shnenglu.com/tdweng/comments/133122.htmlhttp://m.shnenglu.com/tdweng/articles/133122.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/133122.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/133122.html闃呰鍏ㄦ枃

蹇冪窘 2010-11-09 21:23 鍙戣〃璇勮
]]>
_cdecl,_fastcall鍜宊stdcall鐨勫尯鍒?http://m.shnenglu.com/tdweng/articles/130207.html蹇冪窘蹇冪窘Sun, 17 Oct 2010 11:37:00 GMThttp://m.shnenglu.com/tdweng/articles/130207.htmlhttp://m.shnenglu.com/tdweng/comments/130207.htmlhttp://m.shnenglu.com/tdweng/articles/130207.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/130207.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/130207.htmlC++ Calling Convention璋冪敤綰﹀畾錛?/span>
__cdecl __fastcall
涓?/span> __stdcall錛屼笁鑰呴兘鏄皟鐢ㄧ害瀹?/span>(Calling convention)錛屽畠鍐沖畾浠ヤ笅鍐呭錛?/span>

1)鍑芥暟鍙傛暟鐨勫帇鏍堥『搴忥紝2)鐢辮皟鐢ㄨ呰繕鏄璋冪敤鑰呮妸鍙傛暟寮瑰嚭鏍堬紝3)浠ュ強浜х敓鍑芥暟淇グ鍚嶇殑鏂規硶銆?/span>

1銆?/span>__stdcall璋冪敤綰﹀畾錛氬嚱鏁扮殑鍙傛暟鑷彸鍚戝乏閫氳繃鏍堜紶閫掞紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬紝

2銆?/span>_cdecl鏄?/span>C鍜?/span>C錛嬶紜紼嬪簭鐨勭己鐪佽皟鐢ㄦ柟寮忋傛瘡涓涓皟鐢ㄥ畠鐨勫嚱鏁伴兘鍖呭惈娓呯┖鍫嗘爤鐨勪唬鐮侊紝鎵浠ヤ駭鐢熺殑鍙墽琛屾枃浠跺ぇ灝忎細姣旇皟鐢?/span>_stdcall鍑芥暟鐨勫ぇ銆傚嚱鏁伴噰鐢ㄤ粠鍙沖埌宸︾殑鍘嬫爤鏂瑰紡銆傛敞鎰忥細瀵逛簬鍙彉鍙傛暟鐨勬垚鍛樺嚱鏁幫紝濮嬬粓浣跨敤__cdecl鐨勮漿鎹㈡柟寮忋?/span>

3銆?/span>__fastcall璋冪敤綰﹀畾錛氬畠鏄氳繃瀵勫瓨鍣ㄦ潵浼犻佸弬鏁扮殑錛堝疄闄呬笂錛屽畠鐢?/span>ECX鍜?/span>EDX浼犻佸墠涓や釜鍙屽瓧錛?/span>DWORD錛夋垨鏇村皬鐨勫弬鏁幫紝鍓╀笅鐨勫弬鏁頒粛鏃ц嚜鍙沖悜宸﹀帇鏍堜紶閫侊紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬級銆?/span>

4銆?/span>thiscall浠呬粎搴旂敤浜?/span>"C++"鎴愬憳鍑芥暟銆?/span>this鎸囬拡瀛樻斁浜?/span>CX瀵勫瓨鍣紝鍙傛暟浠庡彸鍒板乏鍘嬨?/span>thiscall涓嶆槸鍏抽敭璇嶏紝鍥犳涓嶈兘琚▼搴忓憳鎸囧畾銆?/span>

5銆?/span>naked call閲囩敤1-4鐨勮皟鐢ㄧ害瀹氭椂錛屽鏋滃繀瑕佺殑璇濓紝榪涘叆鍑芥暟鏃剁紪璇戝櫒浼氫駭鐢熶唬鐮佹潵淇濆瓨ESI錛?/span>EDI錛?/span>EBX錛?/span>EBP瀵勫瓨鍣紝閫鍑哄嚱鏁版椂鍒欎駭鐢熶唬鐮佹仮澶嶈繖浜涘瘎瀛樺櫒鐨勫唴瀹廣?/span>naked call涓嶄駭鐢熻繖鏍風殑浠g爜銆?/span>naked call涓嶆槸綾誨瀷淇グ絎︼紝鏁呭繀欏誨拰_declspec鍏卞悓浣跨敤銆?/span>

璋冪敤綰﹀畾鍙互閫氳繃宸ョ▼璁劇疆錛?/span>Setting...\C/C++ \Code Generation欏硅繘琛岄夋嫨錛岀己鐪佺姸鎬佷負__cdecl銆?/span>

鍚嶅瓧淇グ綰﹀畾錛?/span>

1銆佷慨楗板悕(Decoration name)錛?/span>"C"鎴栬?/span>"C++"鍑芥暟鍦ㄥ唴閮紙緙栬瘧鍜岄摼鎺ワ級閫氳繃淇グ鍚嶈瘑鍒?/span>
2
銆?/span>C緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?/span>
__stdcall
璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓笅鍒掔嚎鍓嶇紑錛屽悗闈㈠姞涓婁竴涓?/span>"@"絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛屾牸寮忎負_functionname@number,渚嬪錛?/span>function(int a, int b)錛屽叾淇グ鍚嶄負錛?/span>_function@8
__cdecl璋冪敤綰﹀畾浠呭湪杈撳嚭鍑芥暟鍚嶅墠鍔犱笂涓涓笅鍒掔嚎鍓嶇紑錛屾牸寮忎負_functionname銆?/span>
__fastcall
璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓?/span>"@"絎﹀彿錛屽悗闈篃鏄竴涓?/span>"@"絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛屾牸寮忎負@functionname@number銆?/span>

3銆?/span>C++緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?/span>
__stdcall
璋冪敤綰﹀畾錛?/span>
1)
銆佷互"?"鏍囪瘑鍑芥暟鍚嶇殑寮濮嬶紝鍚庤窡鍑芥暟鍚嶏紱
2)
銆佸嚱鏁板悕鍚庨潰浠?/span>"@@YG"鏍囪瘑鍙傛暟琛ㄧ殑寮濮嬶紝鍚庤窡鍙傛暟琛紱
3)
銆佸弬鏁拌〃浠ヤ唬鍙瘋〃紺猴細
X--void
錛?/span>
D--char
錛?/span>
E--unsigned char
錛?/span>
F--short
錛?/span>
H--int
錛?/span>
I--unsigned int
錛?/span>
J--long
錛?/span>
K--unsigned long
錛?/span>
M--float
錛?/span>
N--double
錛?/span>
_N--bool
錛?/span>
PA--
琛ㄧず鎸囬拡錛屽悗闈㈢殑浠e彿琛ㄦ槑鎸囬拡綾誨瀷錛屽鏋滅浉鍚岀被鍨嬬殑鎸囬拡榪炵畫鍑虹幇錛屼互"0"浠f浛錛屼竴涓?/span>"0"浠h〃涓嬈¢噸澶嶏紱
4)
銆佸弬鏁拌〃鐨勭涓欏逛負璇ュ嚱鏁扮殑榪斿洖鍊肩被鍨嬶紝鍏跺悗渚濇涓哄弬鏁扮殑鏁版嵁綾誨瀷,鎸囬拡鏍囪瘑鍦ㄥ叾鎵鎸囨暟鎹被鍨嬪墠錛?/span>
5)
銆佸弬鏁拌〃鍚庝互"@Z"鏍囪瘑鏁翠釜鍚嶅瓧鐨勭粨鏉燂紝濡傛灉璇ュ嚱鏁版棤鍙傛暟錛屽垯浠?/span>"Z"鏍囪瘑緇撴潫銆?/span>
鍏舵牸寮忎負"?functionname@@YG*****@Z"鎴?/span>"?functionname@@YG*XZ"錛屼緥濡?/span>
  int Test1(char *var1,unsigned long)----"?Test1@@YGHPADK@Z"

  void Test2()-----“?Test2@@YGXXZ

__cdecl璋冪敤綰﹀畾錛?/span>
瑙勫垯鍚屼笂闈㈢殑_stdcall璋冪敤綰﹀畾錛屽彧鏄弬鏁拌〃鐨勫紑濮嬫爣璇嗙敱涓婇潰鐨?/span>"@@YG"鍙樹負"@@YA"銆?/span>
__fastcall
璋冪敤綰﹀畾錛?/span>
瑙勫垯鍚屼笂闈㈢殑_stdcall璋冪敤綰﹀畾錛屽彧鏄弬鏁拌〃鐨勫紑濮嬫爣璇嗙敱涓婇潰鐨?/span>"@@YG"鍙樹負"@@YI"銆?/span>
VC++
瀵瑰嚱鏁扮殑鐪佺己澹版槑鏄?/span>"__cedcl",灝嗗彧鑳借C/C++璋冪敤.


娉ㄦ剰錛?/span>
1
銆?/span>_beginthread闇瑕?/span>__cdecl鐨勭嚎紼嬪嚱鏁板湴鍧錛?/span>_beginthreadex鍜?/span>CreateThread闇瑕?/span>__stdcall鐨勭嚎紼嬪嚱鏁板湴鍧銆?/span>

2銆佷竴鑸?/span>WIN32鐨勫嚱鏁伴兘鏄?/span>__stdcall銆傝屼笖鍦?/span>Windef.h涓湁濡備笅鐨勫畾涔夛細
 #define CALLBACK __stdcall
 #define WINAPI
__stdcall

3銆?/span>extern "C" _declspec(dllexport) int __cdecl Add(int a, int b);
   typedef int (__cdecl*FunPointer)(int a, int b);
  
淇グ絎︾殑涔﹀啓欏哄簭濡備笂銆?/span>

4銆?/span>extern "C"鐨勪綔鐢細濡傛灉Add(int a, int b)鏄湪c璇█緙栬瘧鍣ㄧ紪璇戯紝鑰屽湪c++鏂囦歡浣跨敤錛屽垯闇瑕佸湪c++鏂囦歡涓0鏄庯細extern "C" Add(int a, int b)錛屽洜涓?/span>c緙栬瘧鍣ㄥ拰c++緙栬瘧鍣ㄥ鍑芥暟鍚嶇殑瑙i噴涓嶄竴鏍鳳紙c++緙栬瘧鍣ㄨВ閲婂嚱鏁板悕鐨勬椂鍊欒鑰冭檻鍑芥暟鍙傛暟錛岃繖鏍鋒槸浜嗘柟渚垮嚱鏁伴噸杞斤紝鑰屽湪c璇█涓笉瀛樺湪鍑芥暟閲嶈澆鐨勯棶棰橈級錛屼嬌鐢?/span>extern "C"錛屽疄璐ㄥ氨鏄憡璇?/span>c++緙栬瘧鍣紝璇ュ嚱鏁版槸c搴撻噷闈㈢殑鍑芥暟銆傚鏋滀笉浣跨敤extern "C"鍒欎細鍑虹幇閾炬帴閿欒銆?/span>
涓鑸薄濡備笅浣跨敤錛?/span>
#ifdef _cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif

#ifdef _cplusplus
extern "C"{
#endif
 EXTERN_C int func(int a, int b);
#ifdef _cplusplus
}
#endif

5銆?/span>MFC鎻愪緵浜嗕竴浜涘畯錛屽彲浠ヤ嬌鐢?/span>AFX_EXT_CLASS鏉ヤ唬鏇?/span>__declspec(DLLexport)錛屽茍淇グ綾誨悕錛屼粠鑰屽鍑虹被錛?/span>AFX_API_EXPORT鏉ヤ慨楗板嚱鏁幫紝AFX_DATA_EXPORT鏉ヤ慨楗板彉閲?/span>
AFX_CLASS_IMPORT
錛?/span>__declspec(DLLexport)
AFX_API_IMPORT
錛?/span>__declspec(DLLexport)
AFX_DATA_IMPORT
錛?/span>__declspec(DLLexport)
AFX_CLASS_EXPORT
錛?/span>__declspec(DLLexport)
AFX_API_EXPORT
錛?/span>__declspec(DLLexport)
AFX_DATA_EXPORT
錛?/span>__declspec(DLLexport)
AFX_EXT_CLASS
錛?/span>#ifdef _AFXEXT
   AFX_CLASS_EXPORT
        #else
   AFX_CLASS_IMPORT

6銆?/span>DLLMain璐熻矗鍒濆鍖?/span>(Initialization)鍜岀粨鏉?/span>(Termination)宸ヤ綔錛屾瘡褰撲竴涓柊鐨勮繘紼嬫垨鑰呰榪涚▼鐨勬柊鐨勭嚎紼嬭闂?/span>DLL鏃訛紝鎴栬呰闂?/span>DLL鐨勬瘡涓涓繘紼嬫垨鑰呯嚎紼嬩笉鍐嶄嬌鐢?/span>DLL鎴栬呯粨鏉熸椂錛岄兘浼氳皟鐢?/span>DLLMain銆備絾鏄紝浣跨敤TerminateProcess鎴?/span>TerminateThread緇撴潫榪涚▼鎴栬呯嚎紼嬶紝涓嶄細璋冪敤DLLMain銆?/span>

7銆佷竴涓?/span>DLL鍦ㄥ唴瀛樹腑鍙湁涓涓疄渚?/span>
DLL
紼嬪簭鍜岃皟鐢ㄥ叾杈撳嚭鍑芥暟鐨勭▼搴忕殑鍏崇郴錛?/span>
1)
銆?/span>DLL涓庤繘紼嬨佺嚎紼嬩箣闂寸殑鍏崇郴
DLL
妯″潡琚槧灝勫埌璋冪敤瀹冪殑榪涚▼鐨勮櫄鎷熷湴鍧絀洪棿銆?/span>
DLL
浣跨敤鐨勫唴瀛樹粠璋冪敤榪涚▼鐨勮櫄鎷熷湴鍧絀洪棿鍒嗛厤錛屽彧鑳借璇ヨ繘紼嬬殑綰跨▼鎵璁塊棶銆?/span>
DLL
鐨勫彞鏌勫彲浠ヨ璋冪敤榪涚▼浣跨敤錛涜皟鐢ㄨ繘紼嬬殑鍙ユ焺鍙互琚?/span>DLL浣跨敤銆?/span>
DLLDLL
鍙互鏈夎嚜宸辯殑鏁版嵁孌碉紝浣嗘病鏈夎嚜宸辯殑鍫嗘爤錛屼嬌鐢ㄨ皟鐢ㄨ繘紼嬬殑鏍堬紝涓庤皟鐢ㄥ畠鐨勫簲鐢ㄧ▼搴忕浉鍚岀殑鍫嗘爤妯″紡銆?/span>

2)銆佸叧浜庡叡浜暟鎹
DLL
瀹氫箟鐨勫叏灞鍙橀噺鍙互琚皟鐢ㄨ繘紼嬭闂紱DLL鍙互璁塊棶璋冪敤榪涚▼鐨勫叏灞鏁版嵁銆備嬌鐢ㄥ悓涓DLL鐨勬瘡涓涓繘紼嬮兘鏈夎嚜宸辯殑DLL鍏ㄥ眬鍙橀噺瀹炰緥銆傚鏋滃涓嚎紼嬪茍鍙戣闂悓涓鍙橀噺錛屽垯闇瑕佷嬌鐢ㄥ悓姝ユ満鍒訛紱瀵逛竴涓?/span>DLL鐨勫彉閲忥紝濡傛灉甯屾湜姣忎釜浣跨敤DLL鐨勭嚎紼嬮兘鏈夎嚜宸辯殑鍊鹼紝鍒欏簲璇ヤ嬌鐢ㄧ嚎紼嬪眬閮ㄥ瓨鍌?/span>(TLS錛?/span>Thread Local Strorage)銆?/span>

 Visual C++ Compiler Options鍙互鎸囧畾鐨?span>Calling Convention鏈?/span> 3縐嶏細
    /Gd /Gr /Gz

    榪欎笁涓弬鏁板喅瀹氫簡錛?span>

    1.鍑芥暟鍙傛暟浠ヤ綍縐嶉『搴忓叆鏍堬紝鍙沖埌宸﹁繕鏄乏鍒板彸銆?span>
    2.鍦ㄥ嚱鏁拌繍琛屽畬鍚庯紝鏄皟鐢ㄥ嚱鏁拌繕鏄璋冪敤鍑芥暟娓呯悊鍏ユ爤鐨勫弬鏁般?span>
    3.鍦ㄧ紪璇戞椂鍑芥暟鍚嶅瓧鏄浣曡漿鎹㈢殑銆?span>

    涓嬮潰鎴戜滑鍒嗗埆璇︾粏浠嬬粛錛?span>

    1./Gd
        榪欐槸緙栬瘧鍣ㄩ粯璁ょ殑杞崲妯″紡錛屽涓鑸嚱鏁頒嬌鐢?/span> C鐨勫嚱鏁拌皟鐢ㄨ漿鎹㈡柟寮?span>__cdecl錛?span>
        浣嗘槸瀵逛簬C++ 鎴愬憳鍑芥暟鍜屽墠闈慨楗頒簡__stdcall __fastcall鐨勫嚱鏁伴櫎澶栥?span>

    2./Gr
        瀵逛簬涓鑸嚱鏁頒嬌鐢?span>__fastcall鍑芥暟璋冪敤杞崲鏂瑰紡錛屾墍鏈変嬌鐢?span>__fastcall鐨勫嚱鏁?span>
        蹇呴』瑕佹湁鍑芥暟鍘熷艦銆備絾瀵逛簬C++ 鎴愬憳鍑芥暟鍜屽墠闈慨楗頒簡__cdecl __stdcall 鐨勫嚱鏁伴櫎澶栥?span>

    3./Gz
        瀵逛簬鎵鏈?/span> C鍑芥暟浣跨敤__stdcall鍑芥暟璋冪敤杞崲鏂瑰紡錛屼絾瀵逛簬鍙彉鍙傛暟鐨?/span> C鍑芥暟浠?span>
        鍙婄敤__cdecl __fastcall淇グ榪囩殑鍑芥暟鍜?span>C++
 鎴愬憳鍑芥暟闄ゅ銆傛墍鏈夌敤__stdcall
        淇グ鐨勫嚱鏁板繀欏繪湁鍑芥暟鍘熷艦銆?span>

        浜嬪疄涓婏紝瀵逛簬x86緋葷粺錛?span>C++ 鎴愬憳鍑芥暟鐨勮皟鐢ㄦ柟寮忔湁鐐圭壒鍒紝灝嗘垚鍛樺嚱鏁扮殑this
        鎸囬拡鏀懼叆ECX錛屾墍鏈夊嚱鏁板弬鏁頒粠鍙沖悜宸﹀叆鏍堬紝琚皟鐢ㄧ殑鎴愬憳鍑芥暟璐熻矗娓呯悊鍏ユ爤鐨?span>
        鍙傛暟銆傚浜庡彲鍙樺弬鏁扮殑鎴愬憳鍑芥暟錛屽緇堜嬌鐢?span>__cdecl鐨勮漿鎹㈡柟寮忋?span>

    涓嬮潰璇ヨ繘鍏ヤ富棰橈紝鍒嗗埆璁蹭竴涓嬭繖涓夌鍑芥暟璋冪敤杞崲鏂瑰紡鏈変粈涔堝尯鍒細

    1.__cdecl
        榪欐槸緙栬瘧鍣ㄩ粯璁ょ殑鍑芥暟璋冪敤杞崲鏂瑰紡錛屽畠鍙互澶勭悊鍙彉鍙傛暟鐨勫嚱鏁拌皟鐢ㄣ傚弬鏁?span>
        鐨勫叆鏍堥『搴忔槸浠庡彸鍚戝乏銆傚湪鍑芥暟榪愯緇撴潫鍚庯紝鐢辮皟鐢ㄥ嚱鏁拌礋璐f竻鐞嗗叆鏍堢殑鍙傛暟銆?span>
        鍦ㄧ紪璇戞椂錛屽湪姣忎釜鍑芥暟鍓嶉潰鍔犱笂涓嬪垝綰?span>(_)錛屾病鏈夊嚱鏁板悕澶у皬鍐欑殑杞崲銆傚嵆
                銆銆_functionname

    2.__fastcall
        鏈変竴浜涘嚱鏁拌皟鐢ㄧ殑鍙傛暟琚斁鍏?span>ECX錛?span>EDX涓紝鑰屽叾瀹冨弬鏁頒粠鍙沖悜宸﹀叆鏍堛傝璋冪敤
        鍑芥暟鍦ㄥ畠灝嗚榪斿洖鏃惰礋璐f竻鐞嗗叆鏍堢殑鍙傛暟銆傚湪鍐呭祵姹囩紪璇█鐨勬椂鍊欙紝闇瑕佹敞鎰?span>
        瀵勫瓨鍣ㄧ殑浣跨敤錛屼互鍏嶄笌緙栬瘧鍣ㄤ嬌鐢ㄧ殑浜х敓鍐茬獊銆傚嚱鏁板悕瀛楃殑杞崲鏄細
                銆銆@functionname@number
        娌℃湁鍑芥暟鍚嶅ぇ灝忓啓鐨勮漿鎹紝number琛ㄧず鍑芥暟鍙傛暟鐨勫瓧鑺傛暟銆傜敱浜庢湁涓浜涘弬鏁頒笉
        闇瑕佸叆鏍堬紝鎵浠ヨ繖縐嶈漿鎹㈡柟寮忎細鍦ㄤ竴瀹氱▼搴︿笂鎻愰珮鍑芥暟璋冪敤鐨勯熷害銆?span>

    3.__stdcall
    銆銆鍑芥暟鍙傛暟浠庡彸鍚戝乏鍏ユ爤錛岃璋冪敤鍑芥暟璐熻矗鍏ユ爤鍙傛暟鐨勬竻鐞嗗伐浣溿傚嚱鏁板悕杞崲鏍?span>
    銆銆寮忓涓嬶細
        銆銆銆銆    _functionname@number

    涓嬮潰鎴戜滑浜茶嚜鍐欎竴涓▼搴忥紝鐪嬬湅鍚勭涓嶅悓鐨勮皟鐢ㄥ湪緙栬瘧鍚庢湁浠涔堝尯鍒紝鎴戜滑鐨勮璋?span>
    鐢ㄥ嚱鏁板涓嬶細

    int function(int a, int b)
    {
        return a + b;
    }

    void main()
    {
        function(10, 20);
    }

    1.__cdecl

        _function
                 push    ebp
                 mov     ebp, esp
                 mov     eax, [ebp+8]       ;鍙傛暟1
                 add     eax, [ebp+C]       ;鍔犱笂鍙傛暟2
                 pop     ebp
                 retn
        _main
                 push    ebp
                 mov     ebp, esp
                 push    14h                ;鍙傛暟 2鍏ユ爤
                 push    0Ah                ;鍙傛暟 1鍏ユ爤
                 call    _function          ;璋冪敤鍑芥暟
                 add     esp, 8             ;淇鏍?span>
                 xor     eax, eax
                 pop     ebp
                 retn

    2.__fastcall

        @function@8
                 push    ebp
                 mov     ebp, esp           ;淇濆瓨鏍堟寚閽?span>
                 sub     esp, 8             ;澶氫簡涓や釜灞閮ㄥ彉閲?span>
                 mov     [ebp-8], edx       ;淇濆瓨鍙傛暟 2
                 mov     [ebp-4], ecx       ;淇濆瓨鍙傛暟 1
                 mov     eax, [ebp-4]       ;鍙傛暟 1
                 add     eax, [ebp-8]       ;鍔犱笂鍙傛暟 2
                 mov     esp, ebp           ;淇鏍?span>
                 pop     ebp
                 retn
        _main
                 push    ebp
                 mov     ebp, esp
                 mov     edx, 14h           ;鍙傛暟 2緇?span>EDX
                 mov     ecx, 0Ah           ;鍙傛暟 1緇?span>ECX
                 call    @function@8        ;璋冪敤鍑芥暟
                 xor     eax, eax
                 pop     ebp
                 retn

    3.__stdcall

        _function@8
                 push    ebp
                 mov     ebp, esp
                 mov     eax, [ebp]         ;鍙傛暟 1
                 add     eax, [ebp+C]       ;鍔犱笂鍙傛暟 2
                 pop     ebp
                 retn    8                  ;淇鏍?span>
        _main
                 push    ebp
                 mov     ebp, esp
                 push    14h                ;鍙傛暟 2鍏ユ爤
                 push    0Ah                ;鍙傛暟 1鍏ユ爤
               call    _function@8銆銆銆銆;鍑芥暟璋冪敤
                 xor     eax, eax
                 pop     ebp
                 retn

    鍙涓婅堪涓夌鏂規硶鍚勬湁鍚勭殑鐗圭偣錛岃屼笖_main蹇呴』鏄?span>__cdecl錛屼竴鑸?span>WIN32鐨勫嚱鏁伴兘鏄?span>
    __stdcall銆傝屼笖鍦?span>Windef.h涓湁濡備笅鐨勫畾涔夛細

    #define CALLBACK __stdcall
    #define WINAPI __stdcall



蹇冪窘 2010-10-17 19:37 鍙戣〃璇勮
]]>
銆愬垎浜慍鏁扮粍涓庢寚閽堝涔犵瑪璁?http://m.shnenglu.com/tdweng/articles/129721.html蹇冪窘蹇冪窘Wed, 13 Oct 2010 01:58:00 GMThttp://m.shnenglu.com/tdweng/articles/129721.htmlhttp://m.shnenglu.com/tdweng/comments/129721.htmlhttp://m.shnenglu.com/tdweng/articles/129721.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/129721.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/129721.html鏂囩珷鏍囬銆? c鏁扮粍涓庢寚閽堝涔犵瑪璁?br>銆愭枃绔犱綔鑰呫? evilkis
--------------------------------------------------------------------------------------------------------
1.鏁扮粍鐨勫畾涔?br>int a[5];瀹氫箟浜嗕竴涓暟緇刟,瀹冨彲浠ュ瓨鏀?涓暣鍨嬫暟鎹紝娉ㄦ剰錛氬湪瀹氫箟浜嗕竴涓暟緇勬椂錛岀紪璇戠郴緇熶細鎸夌収鏁扮粍綾誨瀷鍜屾暟緇勫厓绱犱釜鏁版潵鍒嗛厤涓孌佃繛緇殑瀛樺偍絀洪棿鏉ュ瓨鍌ㄦ暟緇勫厓绱犮傚垯鏁扮粍瀛樻斁鏁扮粍a鐨勭┖闂村ぇ灝忎負5*sizeof(int)= 20瀛楄妭銆?br>
2 鏁扮粍鐨勫紩鐢?br>褰撴垜浠紩鐢ㄦ暟緇勫厓绱犳椂涓嬫爣浠?寮濮嬶紝灝忎簬鍏冪礌鐨勪釜鏁幫紝涓斿彧鑳介愪釜寮曠敤鏁扮粍鍏冪礌錛岃屼笉鑳界洿鎺ュ紩鐢ㄦ暣涓暟緇勩傚錛歩nt a[2]={1,2};int b[2]=a;榪欏彞灝辨槸閿欒鐨勶紒鍘熷洜鏄紩鐢ㄤ簡鏁翠釜鏁扮粍銆?br>
3鏁扮粍鍦ㄥ唴瀛樹腑鐨勫瓨鏀?br>鏁扮粍鍦ㄥ唴瀛樹腑寮忔寜鐓т笅鏍囩殑欏哄簭鏉ヤ竴嬈″瓨鏀劇殑鍙互鐞嗚В涓虹嚎鎬у瓨鏀撅紝澶氱淮鏁扮粍涔熸槸鎸夌収榪欎釜欏哄簭瀛樻斁
4 鏁扮粍鐨勫垵濮嬪寲
鏁扮粍鐨勫垵濮嬪寲鍙互鍦ㄥ畾涔夌殑鏃跺欑敤{}鍏ㄩ儴璧嬪?nbsp;濡俰nt a[2]={1,2};濡傛灉鎶婂畾涔夊拰璧嬪煎垎寮閭e氨閿欎簡濡傦細int a[2];a[2]={1,2};鍏朵腑絎簩鍙ユ湰鎰忔槸鎶?,2璧嬪肩粰鏁扮粍a,浣嗘槸姝ゆ椂a[2]鐨勬剰涔夊彉浜嗭紝浠栦笉鍦ㄤ唬琛ㄤ竴涓暟緇勶紝鑰屾槸涓嬫爣寮曠敤鏁扮粍鍏冪礌錛屽嵆鏁扮粍a鐨勭1涓厓绱犮傛墍浠ユ暟緇勫垵濮嬪寲鐨勮祴鍊兼柟寮忓彧鑳藉湪鏁扮粍瀹氫箟鏃朵嬌鐢紝瀹氫箟涔嬪悗鍦ㄨ祴鍊鹼紝鍙兘涓涓厓绱犱竴涓厓绱犵殑璧嬪?br>
5 澶氱淮鏁扮粍
澶氱淮鏁扮粍綆鍗曠殑濡備簩緇存暟緇勶紝浠栧叾瀹炲彲浠ョ湅鎴愪竴涓壒孌婄殑涓浣嶆暟緇勶紝浠栫殑鍏冪礌鏄竴涓竴緇存暟緇勶紝渚嬪錛歩nt a[2][3]鍙互鐪嬪仛鐢?涓竴緇存暟緇刟[0]鍜宎[1]緇勬垚銆?br>濂戒簡綆鍗曠殑浜嗚В浜嗕笅鏁扮粍鐨勫熀鏈煡璇嗭紝鐜板湪鎴戜箞寮濮嬭璁轟竴浜涘父瑙佺殑闂

鏁扮粍鍚嶆槸浠涔堬紵絳変環浜庢寚閽堬紵
鏁扮粍鍚嶆槸涓涓湴鍧錛岃屼笖鏄竴涓笉鍙淇敼鐨勫父閲忋傝繖涓鐐圭被浼間簬絎﹀彿甯擱噺錛屾暟緇勫悕榪欎釜絎﹀彿浠h〃浜嗗綰蟲暟緇勭殑閭e潡鍐呭瓨鐨勯鍦板潃錛屾敞鎰忥細涓嶆槸鏁扮粍鍚嶇殑鍊兼槸閭e潡鍐呭瓨鐨勯鍦板潃錛屾暟緇勫悕鏈韓娌℃湁鍦板潃錛屽彧鏄唬琛ㄤ簡閭e潡鍦板潃錛屼粬鏄竴涓彸鍊鹼紝鑰屾寚閽堟槸涓涓乏鍊鹼紝鎵浠ユ暟緇勫悕涓庢寚閽堜笉鍚屻備緥濡傦細int a[3];铏界劧鏁扮粍鍚峚娌℃湁鍦板潃錛屼絾鏄鍏跺彇鍦板潃&a,寰楀埌鐨勪緷鐒舵槸鏁扮粍棣栧湴鍧銆傛妸鏁扮粍鍚嶆兂璞℃垚涓涓鍙峰父閲忓嵆鍙紝鍗蟲暟緇勫悕娌℃湁鍦板潃錛屽彧鏄唬琛ㄤ簡榪欎釜鏁扮粍鐨勯鍦板潃銆傚張鍥犱負鏁扮粍鍚嶆槸涓湴鍧甯擱噺鎵浠ヤ笉鑳戒慨鏀瑰畠鐨勫鹼紝鍗砤++錛宎--鏄敊璇殑錛佸彧鏈変袱縐嶆儏鍐墊暟緇勫悕涓嶈〃紺哄湴鍧甯擱噺
鍗硈izeof錛坅錛夊拰&a錛屽墠鑰呰〃紺烘暟緇勭殑鏁翠釜闀垮害錛屽悗鑰呮槸鏁扮粍鍦板潃錛屼絾騫朵笉鎰忓懗鐫a鏈夊湴鍧,鏁扮粍鍚嶆槸鏁扮粍鍏冪礌鐨勯鍦板潃錛屼笉鏄暟緇勭殑棣栧湴鍧

涓緇存暟緇勭殑瀵誨潃鍏紡
濡俰nt a[6];
鍒檃[n]鐨勫湴鍧涓?int)a+sizeof(int)*n(褰撶劧n<=6),鍏跺師鐞嗗嵆錛氶鍦板潃+鍋忕Щ鍦板潃鍏朵腑a涓瀹氳鍋氬己鍒剁被鍨嬭漿鎹㈠洜涓篴鏄湁綾誨瀷鐨勶紝蹇呴』鎶婂叾杞崲鎴愭暣鏁幫紝sizeof(int)鍗蟲槸涓涓厓绱犵殑澶у皬
鎺ㄨ屽箍涔?br>瀵逛簬TYPE array[m];
鍒檃rray[n]鐨勫湴鍧涓?(int)array+sizeof(TYPE)*n(n<=m)//鍋氶嗗悜鐨勬椂鍊欏緢鏈夌敤
浜岀淮鏁扮粍鐨勫鍧鍏紡
濡?int a[4][5]
鍒檃[2][3]鐨勫湴鍧涓?(int)a+sizeof(int[5])*2+sizeof(int)*3
                  |           |            |
                  |           |            | 
             鏁扮粍棣栧湴鍧    琛屽亸縐?nbsp;     鍒楀亸縐?br>鍗籌細鍏堢畻紜畾鍦ㄧ鍑犺錛屽湪紜畾鍦ㄧ鍑犲垪鏈鍚庡姞涓婇鍦板潃
鎴栬呯浜岀鏂瑰紡錛?br>a[2][3]鐨勫湴鍧涓?(int)a+sizeof(int)*(2*5+3)    
                          |
                          | 
       鐩存帴瀹氫綅鍏冪礌鐪嬭法瓚婁簡澶氬皯涓厓绱犵劧鍚庝箻浠ヤ粬浠殑鏁版嵁綾誨瀷澶у皬
鍥犱負鏁扮粍a姣忎竴琛屾湁5涓厓绱犳晠2*5,3鏄洰鏍囪鐨勫厓绱犲亸縐?br>鏁呮帹鑰屽厜涔?br>瀵逛簬TYPE array[x][y]浜岀淮鏁扮粍
鍒檃rray[m][n]鐨勫湴鍧涓?(int)a+sizeof(int[y])*m+sizeof(TYPE)*n
鎴朼rray[m][n]鐨勫湴鍧涓?(int)a+sizeof(TYPE)*(m*y+n)
榪欎簺瀵誨潃鍏紡鍦ㄩ嗗悜榪囩▼涓緢鏈夌敤錛岃嚦灝戠湅鍒拌繖鏍風殑瀵誨潃鏂瑰紡鎴戜滑搴旇鑳芥兂鍒版槸涓暟緇勶紝鍏跺疄鎶婃暟緇勫湪鍐呭瓨涓殑瀛樻斁鎯蟲垚綰挎х殑灝卞緢濂界悊瑙h繖浜涘鍧鏂規硶銆?br>
瀹炶返涓涓嬶細
        int a[5]={0,1,2,3,4};
        int b;
        b=*((int)a+sizeof(int)*2);
   闂産鏄惁鑳藉彇鍒癮[2]鐨勫?
濡傛灉浣犺涓嶈兘錛屾伃鍠滀綘錛屼綘寰堢悊瑙e湴鍧涓庢暟鍊肩殑姒傚康錛屽鏋滀綘璇磋兘錛屼篃涓嶈兘鎬綘錛屼笅闈㈡垜浠氨鍒嗘瀽涓涓嬪湴鍧鍜屾暟鍊肩殑鍏崇郴錛岀敱涓婇潰鐨勮榪版垜浠煡閬?(int)a+sizeof(int)*2)榪欓噷寰楀埌鐨勭‘紜疄瀹炴槸a[2]鐨勫湴鍧錛岀劧鍚庡鍦板潃鍙栧唴瀹圭悊鎵褰撶劧鍙栫殑鏄痑[2]鐨勫煎晩錛屽懙鍛碉紝鍒濆鑰呭彲鑳介兘浼氳繖涔堟兂錛屼絾鏄偅閮芥槸鎴戜滑涓鍘㈡儏鎰挎墍閫犳垚鐨勶紝鍏跺疄((int)a+sizeof(int)*2)鍙槸涓涓暣鏁幫紝涓嶆槸鍦板潃鐨勫惈涔夛紝娌℃湁浠諱綍鎸囧悜鎰忎箟錛屼篃灝辨槸a[2]鐨勫湴鍧鍊肩瓑浜?(int)a+sizeof(int)*2)錛屼絾鏄茍涓嶆剰鍛崇潃((int)a+sizeof(int)*2)鏄湴鍧錛屽疄闄呬笂鍦板潃鏈潵灝辨槸涓涓熀鏈暟鎹被鍨嬶紝涔熷氨鏄鍦板潃鏄湁鎸囧悜鎰忎箟鏈夌被鍨嬭繖鏄湴鍧鍜屽湴鍧鍊肩殑鍖哄埆錛屽鏋滄病鏈夌被鍨嬶紝鎿嶄綔緋葷粺浠庤繖棣栧湴鍧鍙栧兼牴鏈笉鐭ラ亾瑕佸彇澶氬皯瀛楄妭錛?br>鎵浠ユ垜浠鍔犱笂寮哄埗綾誨瀷杞崲錛屼嬌浠栨湁綾誨瀷鏈夋寚鍚戞剰涔夊嵆鑻ユ敼鎴?(int*)((int)a+sizeof(int)*2)鍗沖彲鍙栧埌a[2]鐨勫?br>

4 鏁扮粍鍚嶄綔鍑芥暟鍙傛暟
褰撴暟緇勫悕浣滃嚱鏁板弬鏁版椂錛屼紶閫掔殑鏄暟緇勯鍦板潃鐨勪竴浠芥嫹璐濓紝铏界劧鏁扮粍鍚嶄笉鍙互鑷姞錛屼絾鏄艦鍙傚彲浠ヨ繖閲屾敞鎰忥紝鍥犱負褰㈠弬鏄彉閲忥紝瀛樻斁鐨勫彧鏄暟緇勯鍦板潃鐨勪竴浠芥嫹璐濄?br>
6鎸囬拡
鎸囬拡鐨勫畾涔夛細
閫氫織鐨勮錛氭寚閽堝氨鏄竴涓彉閲忥紝浠栧瓨鏀懼彟涓涓彉閲忕殑鍦板潃錛涚壒孌婂氨鐗規畩鍦ㄥ畠瀛樻斁鐨勬槸鍦板潃銆?br>寮勬竻鍏充簬鎸囬拡鐨?涓柟闈㈢殑鍐呭錛氭寚閽堢殑綾誨瀷 鎸囬拡鎵鎸囧悜鐨勭被鍨?nbsp;鎸囬拡鐨勫?nbsp;鎸囬拡鏈韓鎵鍗犵殑鍐呭瓨鍖?br>濡傦細
1鎸囬拡鐨勭被鍨?br>鎶婃寚閽堢殑鍚嶅瓧鍘繪帀鍓╀笅鐨勫氨鏄寚閽堢殑綾誨瀷錛?br>int *p                  //鎸囬拡鐨勭被鍨嬩負 int*
char **p               //鎸囬拡鐨勭被鍨嬩負char**
int (*p)[5]              //鎸囬拡寰楀埌綾誨瀷涓篿nt(*)[5]
鍦?2浣嶅鉤鍙頒笅閲屾墍鏈夋寚閽堢被鍨嬬殑澶у皬鍧囦負4瀛楄妭
2 鎸囬拡鎵鎸囧悜鐨勭被鍨?br>褰撴垜浠氳繃鎸囬拡鏉ヨ闂寚閽堟墍鎸囧悜鐨勫唴瀛樺尯鏃訛紝鎸囬拡鐨勬墍鎸囧悜鐨勭被鍨嬪喅瀹氫簡緙栬瘧鍣ㄥ皢閭e潡鍐呭瓨閲岀殑鍐呭褰撳仛浠涔堟潵鐪嬪緟
鎶婃寚閽堢殑鍚嶅瓧鍜屾寚閽堝0鏄庣*鍘繪帀錛屽墿涓嬬殑鍗蟲寚閽堟墍鎸囧悜鐨勭被鍨?br>int *p           //鎸囬拡鎵鎸囧悜鐨勭被鍨嬩負int
char **p         //鎸囬拡鎵鎸囧悜鐨勭被鍨嬩負int*鍗硃鎸囧悜涓涓寚閽?br>int (*p)[5]        //鎸囬拡鎵鎸囧悜鐨勭被鍨嬩負int()[5]
3鎸囬拡鐨勫?br>鎸囬拡鐨勫兼寚閽堝彉閲忓瓨鏀劇殑鍦板潃鍊鹼紝浠栨寚鍚戦鍦板潃涓轟粬鐨勪竴鐗囧唴瀛樺尯錛屽ぇ灝忎負sizeof(鎸囬拡鎵鎸囧悜鐨勭被鍨?
4 鎸囬拡鏈韓鎵鍗犵殑鍐呭瓨鍖?br>鍥犱負鎸囬拡涔熸槸涓涓彉閲忥紝鎵浠ユ寚閽堟湰韜篃鍗犲唴瀛橈紝鍦?2騫沖彴涓嬪ぇ灝忎負4瀛楄妭
榪愮畻絎?amp;鍜?
&a鐨勭粨鏋滄槸浜х敓浜嗕竴涓寚閽堬紝*p鐨勭粨鏋滄槸p鎵鎸囧悜鐨勪笢瑗?br>
鎸囬拡鐨勮繍綆?br>鎸囬拡鍔犲噺涓涓暣鍨嬫暟鎹緱鍒扮殑榪樻槸涓涓寚閽堬紝鎸囬拡鍔犲噺涓涓寚閽堝緱鍒扮殑鏄竴涓暣鍨嬫暟鎹?br>
鍏充簬澶嶆潅鐨勬寚閽堝0鏄?br>鎸囬拡鏁扮粍:濡?nbsp;int *ptr[10],棣栧厛瀹冩槸涓涓惈鏈夋槸涓厓绱犵殑鏁扮粍錛屽叾嬈″厓绱犵被鍨嬩負int*,鍗沖厓绱犱負鎸囬拡錛?br>鏁扮粍鎸囬拡錛歩nt (*p)[10]錛岄鍏堜粬鏄竴涓寚閽堬紝鍏舵浠栨寚鍚戜竴涓猧nt[10]鐨勬暟緇?br>濡傛灉瀹炲湪寮勬販鐨勮瘽灝辨兂鎯崇墰濂跺拰濂剁墰鐨勫尯鍒紝鐗涘ザ鏄ザ錛岃屽ザ鐗涙槸鐗?鍗充腑鍥戒漢璇磋瘽涓昏閮藉湪鍚庨潰錛岃鍫嗘爤錛屽叾瀹炶鐨勬槸鏍?
鍑芥暟鎸囬拡:
int (*p) (int x,int y)鍥犱負鎸囬拡鎸囧悜鍑芥暟鑰屽嚱鏁板悕鐨勭被鍨嬩負int(int x,int y)錛涙墍浠ュ畾涔夌殑鏃跺欑浉褰撲簬 int (int x,int y) (*p)
濡傛灉鎶?p涓よ竟鐨勬嫭鍙峰幓鎺夊垯int *p(int x,int y)琛ㄧず鍑芥暟p榪斿洖鍊兼槸涓寚閽?br>9 浜岀淮鏁扮粍涓庢寚閽?br>
int ptr[2][3]={1,2,3,4,5,6};
鍏充簬浜岀淮鏁扮粍涓昏灝辨槸瑕佹悶娓呮 鏁扮粍鐨勬寚閽?nbsp;鏌愪竴琛岀殑鎸囬拡 鏌愪竴琛屾煇涓鍒楃殑鎸囬拡涔嬮棿鐨勫尯鍒?br>鍗曠函鐨勬暟緇勫悕ptr鍒欐槸鏁扮粍絎?琛岀殑鎸囬拡 濂規寚鍚戠0琛岋紝鍚岀悊ptr+1鎸囧悜絎?琛岋紝榪欎袱涓潎涓鴻鎸囬拡錛岄棶棰樻潵浜?nbsp;*(ptr+1)鍙兘鏈夊緢澶氫漢璁や負瀹冪殑鍊間負4錛屽嵆ptr[1][0]鐨勫鹼紝鍥犱負ptr+1鏄1琛岀殑棣栧湴鍧錛屾墍浠ュ鍏跺彇鍐呭搴旇涓簆tr[1][0]鐨勫鹼紝瀹為檯涓婃槸閿欑殑鍥犱負 ptr+1鏄竴涓鎸囬拡 鑰屾垜浠鍙栧厓绱犵殑璇濊浣跨敤鍒楁寚閽堬紝鎵浠ヨ鍋氫釜寮哄埗綾誨瀷杞崲 鍗?(ptr+1)涓哄垪鎸囬拡鍏跺間笌ptr+1鐨勫肩浉絳変絾鎰忎箟涓嶅悓濡傛灉涓嶇悊瑙h鎺ョ潃鐪?br>渚嬪錛歩nt a[i]
榪欐牱鏁扮粍鍚嶅姞涓嬫爣鐨勫艦寮忥紝琚紪璇戝櫒鐞嗚В涓?br>*(a+i)
鍚岀悊錛宎[i][j]琚悊瑙d負錛?br>         *(a[i] + j)
            錛?nbsp;*(*(a + i) + j)  
a+1琛ㄧずa[1]鐨勫湴鍧錛宎[1]琛ㄧずa[1][0]鐨勫湴鍧,灝界浠栦滑鐨勫兼槸涓鏍風殑錛?br>
鍏跺疄鏁扮粍涓庢寚閽堝茍涓嶉毦錛屽彧瑕佸鉤鏃跺緇冧範澶氱敤涔呰屼箙涔嬪氨浼氫簡銆傜瑪璁板氨鍒拌繖閲屼簡鍐欑殑姣旇緝涔憋紝甯屾湜瀵瑰垵瀛﹁呮湁鎵甯姪錛屾湁涓嶅鐨勫湴鏂硅鎸囨

蹇冪窘 2010-10-13 09:58 鍙戣〃璇勮
]]>
鍑芥暟鎴愬憳鍙橀噺http://m.shnenglu.com/tdweng/articles/129094.html蹇冪窘蹇冪窘Fri, 08 Oct 2010 14:20:00 GMThttp://m.shnenglu.com/tdweng/articles/129094.htmlhttp://m.shnenglu.com/tdweng/comments/129094.htmlhttp://m.shnenglu.com/tdweng/articles/129094.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/129094.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/129094.html 

class base
{
public:
 
base(int i):m_j(i),m_i(m_j)
 
{
  
 }

 
int get_i()
 
{
  
return m_i;
 }

 
int get_j()
 
{
  
return m_j;
 }

protected:
private:
 
int m_i;
 
int m_j;
}
;

int main(int argc, char* argv[])
{
 
base obj(98);
 cout 
<< obj.get_i() << endl
  
<< obj.get_j() << endl;
 
return 0;
}


鍦ㄥ甫鍙傛暟鐨勬瀯閫犲嚱鏁頒腑錛屽垵濮嬪寲鍒楄〃鐨勫垵濮嬪寲鍙橀噺欏哄簭鏄牴鎹垚鍛樺彉閲忕殑澹版槑欏哄簭鏉ユ墽琛岀殑錛屽洜姝_i浼氳
璧嬩簣涓涓殢鏈哄鹼紝杈撳嚭鏄?br>-858993460
98
濡傛灉鍦ㄥ0鏄庡彉閲忎負
 int m_j;

int m_i;
灝變細杈撳嚭姝e父鍊?
98
98
class A
{
   
const int Size = 0;
}

鏄敊璇殑錛屽父閲忓繀欏誨湪鏋勯犲嚱鏁扮殑鍒濆鍖栧垪琛ㄩ噷闈㈠垵濮嬪寲
濡?br>
class A
{
   A()
  
{
  
const int Size = 10;
}

}


蹇冪窘 2010-10-08 22:20 鍙戣〃璇勮
]]>
static鐢ㄦ硶鎬葷粨http://m.shnenglu.com/tdweng/articles/124767.html蹇冪窘蹇冪窘Thu, 26 Aug 2010 01:07:00 GMThttp://m.shnenglu.com/tdweng/articles/124767.htmlhttp://m.shnenglu.com/tdweng/comments/124767.htmlhttp://m.shnenglu.com/tdweng/articles/124767.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/124767.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/124767.html鐢╯tatic澹版槑鐨勫嚱鏁板拰鍙橀噺灝忕粨

 static 澹版槑鐨勫彉閲忓湪C璇█涓湁涓ゆ柟闈㈢殑鐗瑰緛錛?br>銆銆1)銆佸彉閲忎細琚斁鍦ㄧ▼搴忕殑鍏ㄥ眬瀛樺偍鍖轟腑錛岃繖鏍峰彲浠ュ湪涓嬩竴嬈¤皟鐢ㄧ殑鏃跺欒繕鍙互淇濇寔鍘熸潵鐨勮祴鍊箋傝繖涓鐐規槸瀹冧笌鍫嗘爤鍙橀噺鍜屽爢鍙橀噺鐨勫尯鍒?br>銆銆2)銆佸彉閲忕敤static鍛婄煡緙栬瘧鍣紝鑷繁浠呬粎鍦ㄥ彉閲忕殑浣滅敤鑼冨洿鍐呭彲瑙併傝繖涓鐐規槸瀹冧笌鍏ㄥ眬鍙橀噺鐨勫尯鍒?br>Tips:
銆銆A.鑻ュ叏灞鍙橀噺浠呭湪鍗曚釜C鏂囦歡涓闂紝鍒欏彲浠ュ皢榪欎釜鍙橀噺淇敼涓洪潤鎬佸叏灞鍙橀噺錛屼互闄嶄綆妯″潡闂寸殑鑰﹀悎搴︼紱
銆銆B.鑻ュ叏灞鍙橀噺浠呯敱鍗曚釜鍑芥暟璁塊棶錛屽垯鍙互灝嗚繖涓彉閲忔敼涓鴻鍑芥暟鐨勯潤鎬佸眬閮ㄥ彉閲忥紝浠ラ檷浣庢ā鍧楅棿鐨勮﹀悎搴︼紱
銆銆C.璁捐鍜屼嬌鐢ㄨ闂姩鎬佸叏灞鍙橀噺銆侀潤鎬佸叏灞鍙橀噺銆侀潤鎬佸眬閮ㄥ彉閲忕殑鍑芥暟鏃訛紝闇瑕佽冭檻閲嶅叆闂錛?br>        D.濡傛灉鎴戜滑闇瑕佷竴涓彲閲嶅叆鐨勫嚱鏁幫紝閭d箞錛屾垜浠竴瀹氳閬垮厤鍑芥暟涓嬌鐢╯tatic鍙橀噺(榪欐牱鐨勫嚱鏁拌縐頒負錛氬甫“鍐呴儴瀛樺偍鍣?#8221;鍔熻兘鐨勭殑鍑芥暟)
        E.鍑芥暟涓繀欏昏浣跨敤static鍙橀噺鎯呭喌:姣斿褰撴煇鍑芥暟鐨勮繑鍥炲間負鎸囬拡綾誨瀷鏃訛紝鍒欏繀欏繪槸static鐨勫眬閮ㄥ彉閲忕殑鍦板潃浣滀負榪斿洖鍊鹼紝鑻ヤ負auto綾誨瀷錛屽垯榪斿洖涓洪敊鎸囬拡銆?o:p>

鍑芥暟鍓嶅姞static浣垮緱鍑芥暟鎴愪負闈欐佸嚱鏁般備絾姝ゅ“static”鐨勫惈涔変笉鏄寚瀛樺偍鏂瑰紡錛岃屾槸鎸囧鍑芥暟鐨勪綔鐢ㄥ煙浠呭眬闄愪簬鏈枃浠?鎵浠ュ張縐板唴閮ㄥ嚱鏁?銆備嬌鐢ㄥ唴閮ㄥ嚱鏁扮殑濂藉鏄細涓嶅悓鐨勪漢緙栧啓涓嶅悓鐨勫嚱鏁版椂錛屼笉鐢ㄦ媴蹇冭嚜宸卞畾涔夌殑鍑芥暟錛屾槸鍚︿細涓庡叾瀹冩枃浠朵腑鐨勫嚱鏁板悓鍚嶃?o:p>

鎵╁睍鍒嗘瀽:鏈static鏈夌潃涓嶅甯哥殑鍘嗗彶.璧峰垵錛屽湪C涓紩鍏ュ叧閿瓧static鏄負浜嗚〃紺洪鍑轟竴涓潡鍚庝粛鐒跺瓨鍦ㄧ殑灞閮ㄥ彉閲忋傞殢鍚庯紝static鍦–涓湁浜嗙浜岀鍚箟錛氱敤鏉ヨ〃紺轟笉鑳借鍏跺畠鏂囦歡璁塊棶鐨勫叏灞鍙橀噺鍜屽嚱鏁般備負浜嗛伩鍏嶅紩鍏ユ柊鐨勫叧閿瓧錛屾墍浠ヤ粛浣跨敤static鍏抽敭瀛楁潵琛ㄧず榪欑浜岀鍚箟銆傛渶鍚庯紝C++閲嶇敤浜嗚繖涓叧閿瓧錛屽茍璧嬩簣瀹冧笌鍓嶉潰涓嶅悓鐨勭涓夌鍚箟錛氳〃紺哄睘浜庝竴涓被鑰屼笉鏄睘浜庢綾葷殑浠諱綍鐗瑰畾瀵硅薄鐨勫彉閲忓拰鍑芥暟(涓嶫ava涓鍏抽敭瀛楃殑鍚箟鐩稿悓)銆?o:p>

鍏ㄥ眬鍙橀噺銆侀潤鎬佸叏灞鍙橀噺銆侀潤鎬佸眬閮ㄥ彉閲忓拰灞閮ㄥ彉閲忕殑鍖哄埆

鍙橀噺鍙互鍒嗕負錛氬叏灞鍙橀噺銆侀潤鎬佸叏灞鍙橀噺銆侀潤鎬佸眬閮ㄥ彉閲忓拰灞閮ㄥ彉閲忋?br>          鎸夊瓨鍌ㄥ尯鍩熷垎錛屽叏灞鍙橀噺銆侀潤鎬佸叏灞鍙橀噺鍜岄潤鎬佸眬閮ㄥ彉閲忛兘瀛樻斁鍦ㄥ唴瀛樼殑闈欐佸瓨鍌ㄥ尯鍩燂紝灞閮ㄥ彉閲忓瓨鏀懼湪鍐呭瓨鐨勬爤鍖恒?br>          鎸変綔鐢ㄥ煙鍒嗭紝鍏ㄥ眬鍙橀噺鍦ㄦ暣涓伐紼嬫枃浠跺唴閮芥湁鏁堬紱闈欐佸叏灞鍙橀噺鍙湪瀹氫箟瀹冪殑鏂囦歡鍐呮湁鏁堬紱闈欐佸眬閮ㄥ彉閲忓彧鍦ㄥ畾涔夊畠鐨勫嚱鏁板唴鏈夋晥錛屽彧鏄▼搴忎粎鍒嗛厤涓嬈″唴瀛橈紝鍑芥暟榪斿洖鍚庯紝璇ュ彉閲忎笉浼氭秷澶憋紱灞閮ㄥ彉閲忓湪瀹氫箟瀹冪殑鍑芥暟鍐呮湁鏁堬紝浣嗘槸鍑芥暟榪斿洖鍚庡け鏁堛?o:p>

鍏ㄥ眬鍙橀噺(澶栭儴鍙橀噺)鐨勮鏄庝箣鍓嶅啀鍐犱互static 灝辨瀯鎴愪簡闈欐佺殑鍏ㄥ眬鍙橀噺銆傚叏灞鍙橀噺鏈韓灝辨槸闈欐佸瓨鍌ㄦ柟寮忥紝 闈欐佸叏灞鍙橀噺褰撶劧涔熸槸闈欐佸瓨鍌ㄦ柟寮忋?榪欎袱鑰呭湪瀛樺偍鏂瑰紡涓婂茍鏃犱笉鍚屻傝繖涓よ呯殑鍖哄埆铏藉湪浜庨潪闈欐佸叏灞鍙橀噺鐨勪綔鐢ㄥ煙鏄暣涓簮紼嬪簭錛?褰撲竴涓簮紼嬪簭鐢卞涓簮鏂囦歡緇勬垚鏃訛紝闈為潤鎬佺殑鍏ㄥ眬鍙橀噺鍦ㄥ悇涓簮鏂囦歡涓兘鏄湁鏁堢殑銆?鑰岄潤鎬佸叏灞鍙橀噺鍒欓檺鍒朵簡鍏朵綔鐢ㄥ煙錛?鍗沖彧鍦ㄥ畾涔夎鍙橀噺鐨勬簮鏂囦歡鍐呮湁鏁堬紝 鍦ㄥ悓涓婧愮▼搴忕殑鍏跺畠婧愭枃浠朵腑涓嶈兘浣跨敤瀹冦傜敱浜庨潤鎬佸叏灞鍙橀噺鐨勪綔鐢ㄥ煙灞闄愪簬涓涓簮鏂囦歡鍐咃紝鍙兘涓鴻婧愭枃浠跺唴鐨勫嚱鏁板叕鐢紝 鍥犳鍙互閬垮厤鍦ㄥ叾瀹冩簮鏂囦歡涓紩璧烽敊璇?

銆銆浠庝互涓婂垎鏋愬彲浠ョ湅鍑猴紝 鎶婂眬閮ㄥ彉閲忔敼鍙樹負闈欐佸彉閲忓悗鏄敼鍙樹簡瀹冪殑瀛樺偍鏂瑰紡鍗蟲敼鍙樹簡瀹冪殑鐢熷瓨鏈熴傛妸鍏ㄥ眬鍙橀噺鏀瑰彉涓洪潤鎬佸彉閲忓悗鏄敼鍙樹簡瀹冪殑浣滅敤鍩燂紝 闄愬埗浜嗗畠鐨勪嬌鐢ㄨ寖鍥淬?o:p>

銆銆static鍑芥暟涓庢櫘閫氬嚱鏁頒綔鐢ㄥ煙涓嶅悓銆備粎鍦ㄦ湰鏂囦歡銆傚彧鍦ㄥ綋鍓嶆簮鏂囦歡涓嬌鐢ㄧ殑鍑芥暟搴旇璇存槑涓哄唴閮ㄥ嚱鏁?static)錛屽唴閮ㄥ嚱鏁板簲璇ュ湪褰撳墠婧愭枃浠朵腑璇存槑鍜屽畾涔夈傚浜庡彲鍦ㄥ綋鍓嶆簮鏂囦歡浠ュ浣跨敤鐨勫嚱鏁幫紝搴旇鍦ㄤ竴涓ご鏂囦歡涓鏄庯紝瑕佷嬌鐢ㄨ繖浜涘嚱鏁扮殑婧愭枃浠惰鍖呭惈榪欎釜澶存枃浠?o:p>

銆銆static鍏ㄥ眬鍙橀噺涓庢櫘閫氱殑鍏ㄥ眬鍙橀噺鏈変粈涔堝尯鍒細static鍏ㄥ眬鍙橀噺鍙垵濮嬪寲涓嬈★紝闃叉鍦ㄥ叾浠栨枃浠跺崟鍏冧腑琚紩鐢?
銆銆static灞閮ㄥ彉閲忓拰鏅氬眬閮ㄥ彉閲忔湁浠涔堝尯鍒細static灞閮ㄥ彉閲忓彧琚垵濮嬪寲涓嬈★紝涓嬩竴嬈′緷鎹笂涓嬈$粨鏋滃鹼紱
       static鍑芥暟涓庢櫘閫氬嚱鏁版湁浠涔堝尯鍒細static鍑芥暟鍦ㄥ唴瀛樹腑鍙湁涓浠斤紝鏅氬嚱鏁板湪姣忎釜琚皟鐢ㄤ腑緇存寔涓浠芥嫹璐?br>       鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忓鏋滄病鏈夋墜宸ュ垵濮嬪寲錛屽垯鐢辯紪璇戝櫒鍒濆鍖栦負0銆傚眬閮ㄥ彉閲忕殑鍊間笉鍙煡銆?o:p>

 

 

.鍏堟潵浠嬬粛瀹冪殑絎竴鏉′篃鏄渶閲嶈鐨勪竴鏉★細闅愯棌銆?

褰撴垜浠悓鏃剁紪璇戝涓枃浠舵椂錛屾墍鏈夋湭鍔爏tatic鍓嶇紑鐨勫叏灞鍙橀噺鍜屽嚱鏁伴兘鍏鋒湁鍏ㄥ眬鍙鎬с備負鐞嗚В榪欏彞璇濓紝鎴戜婦渚嬫潵璇存槑銆傛垜浠鍚屾椂緙栬瘧涓や釜婧愭枃浠訛紝涓涓槸a.c錛屽彟涓涓槸main.c.

涓嬮潰鏄痑.c鐨勫唴瀹癸細

 char a = 'A'; // global variable
            void msg()
            {
            printf("Hello\n");
            }
            

涓嬮潰鏄痬ain.c鐨勫唴瀹癸細

 int main(void)
            {
            extern char a; // extern variable must be declared before use
            printf("%c ", a);
            (void)msg();
            return 0;
            }
            

紼嬪簭鐨勮繍琛岀粨鏋滄槸錛?/p>

A Hello

浣犲彲鑳戒細闂細涓轟粈涔堝湪a.c涓畾涔夌殑鍏ㄥ眬鍙橀噺a鍜屽嚱鏁癿sg鑳藉湪main.c涓嬌鐢紵鍓嶉潰璇磋繃錛屾墍鏈夋湭鍔爏tatic鍓嶇紑鐨勫叏灞鍙橀噺鍜屽嚱鏁伴兘鍏鋒湁鍏ㄥ眬鍙鎬э紝鍏跺畠鐨勬簮鏂囦歡涔熻兘璁塊棶銆傛渚嬩腑錛宎鏄叏灞鍙橀噺錛宮sg鏄嚱鏁幫紝騫朵笖閮芥病鏈夊姞static鍓嶇紑錛屽洜姝ゅ浜庡彟澶栫殑婧愭枃浠秏ain.c鏄彲瑙佺殑銆?/p>

濡傛灉鍔犱簡static錛屽氨浼氬鍏跺畠婧愭枃浠墮殣钘忋備緥濡傚湪a鍜宮sg鐨勫畾涔夊墠鍔犱笂static錛宮ain.c灝辯湅涓嶅埌瀹冧滑浜嗐傚埄鐢ㄨ繖涓鐗規у彲浠ュ湪涓嶅悓鐨勬枃浠朵腑瀹氫箟鍚屽悕鍑芥暟鍜屽悓鍚嶅彉閲忥紝鑰屼笉蹇呮媴蹇冨懡鍚嶅啿紿併係tatic鍙互鐢ㄤ綔鍑芥暟鍜屽彉閲忕殑鍓嶇紑錛屽浜庡嚱鏁版潵璁詫紝static鐨勪綔鐢ㄤ粎闄愪簬闅愯棌錛岃屽浜庡彉閲忥紝static榪樻湁涓嬮潰涓や釜浣滅敤銆?/p>

2.static鐨勭浜屼釜浣滅敤鏄繚鎸佸彉閲忓唴瀹圭殑鎸佷箙銆?/p>

瀛樺偍鍦ㄩ潤鎬佹暟鎹尯鐨勫彉閲忎細鍦ㄧ▼搴忓垰寮濮嬭繍琛屾椂灝卞畬鎴愬垵濮嬪寲錛屼篃鏄敮涓鐨勪竴嬈″垵濮嬪寲銆傚叡鏈変袱縐嶅彉閲忓瓨鍌ㄥ湪闈欐佸瓨鍌ㄥ尯錛氬叏灞鍙橀噺鍜宻tatic鍙橀噺錛屽彧涓嶈繃鍜屽叏灞鍙橀噺姣旇搗鏉ワ紝static鍙互鎺у埗鍙橀噺鐨勫彲瑙佽寖鍥達紝璇村埌搴晄tatic榪樻槸鐢ㄦ潵闅愯棌鐨勩傝櫧鐒惰繖縐嶇敤娉曚笉甯歌錛屼絾鎴戣繕鏄婦涓涓緥瀛愩?/p>
 #include 錛渟tdio.h錛?
            int fun(void){
            static int count = 10; // 浜嬪疄涓婃璧嬪艱鍙ヤ粠鏉ユ病鏈夋墽琛岃繃
            return count--;
            }
            int count = 1;
            int main(void)
            {
            printf("global\t\tlocal static\n");
            for(; count 錛? 10; ++count)
            printf("%d\t\t%d\n", count, fun());
            return 0;
            }

紼嬪簭鐨勮繍琛岀粨鏋滄槸錛?br>

global local static
1  10
2   9
3   8
4   7
5   6
6   5
7   4
8   3
9   2
10  1

3.static鐨勭涓変釜浣滅敤鏄粯璁ゅ垵濮嬪寲涓?.鍏跺疄鍏ㄥ眬鍙橀噺涔熷叿澶囪繖涓灞炴э紝鍥犱負鍏ㄥ眬鍙橀噺涔熷瓨鍌ㄥ湪闈欐佹暟鎹尯銆?/p>

鍦ㄩ潤鎬佹暟鎹尯錛屽唴瀛樹腑鎵鏈夌殑瀛楄妭榛樿鍊奸兘鏄?x00錛屾煇浜涙椂鍊欒繖涓鐗圭偣鍙互鍑忓皯紼嬪簭鍛樼殑宸ヤ綔閲忋傛瘮濡傚垵濮嬪寲涓涓█鐤忕煩闃碉紝鎴戜滑鍙互涓涓竴涓湴鎶婃墍鏈夊厓绱犻兘緗?錛岀劧鍚庢妸涓嶆槸0鐨勫嚑涓厓绱犺祴鍊箋傚鏋滃畾涔夋垚闈欐佺殑錛屽氨鐪佸幓浜嗕竴寮濮嬬疆0鐨勬搷浣溿傚啀姣斿瑕佹妸涓涓瓧絎︽暟緇勫綋瀛楃涓叉潵鐢紝浣嗗張瑙夊緱姣忔鍦ㄥ瓧絎︽暟緇勬湯灝懼姞‘\0’澶夯鐑︺傚鏋滄妸瀛楃涓插畾涔夋垚闈欐佺殑錛屽氨鐪佸幓浜嗚繖涓夯鐑︼紝鍥犱負閭i噷鏈潵灝辨槸‘\0’銆備笉濡ㄥ仛涓皬瀹為獙楠岃瘉涓涓嬨?/p>
#include 錛渟tdio.h錛?
            int a;
            int main(void)
            {
            int i;
            static char str[10];
            printf("integer: %d; string: (begin)%s(end)", a, str);
            return 0;
            }
            

紼嬪簭鐨勮繍琛岀粨鏋滃涓媔nteger錛?0錛?string錛?錛坆egin錛夛紙end錛?/p>

鏈鍚庡static鐨勪笁鏉′綔鐢ㄥ仛涓鍙ヨ瘽鎬葷粨銆傞鍏坰tatic鐨勬渶涓昏鍔熻兘鏄殣钘忥紝鍏舵鍥犱負static鍙橀噺瀛樻斁鍦ㄩ潤鎬佸瓨鍌ㄥ尯錛屾墍浠ュ畠鍏峰鎸佷箙鎬у拰榛樿鍊?.



蹇冪窘 2010-08-26 09:07 鍙戣〃璇勮
]]>
闆跺兼瘮杈?-BOOL錛宨nt錛宖loat錛屾寚閽堝彉閲忎笌闆跺兼瘮杈冪殑if璇彞http://m.shnenglu.com/tdweng/articles/124762.html蹇冪窘蹇冪窘Thu, 26 Aug 2010 00:36:00 GMThttp://m.shnenglu.com/tdweng/articles/124762.htmlhttp://m.shnenglu.com/tdweng/comments/124762.htmlhttp://m.shnenglu.com/tdweng/articles/124762.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/124762.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/124762.html榪欐槸紼嬪簭鍛橀潰璇曠殑涓閬撳父瑙侀錛屼篃鏄釜C++鍩虹闂銆傝嫢鍙湪澶у閲岀湅榪囧嚑鏈熀紜鐨勭紪紼嬪叆闂ㄤ功錛岀湅瑙佽繖閬撻鍙兘浼氳寰楀鎬紝涓嶅氨鏄拰0姣旇緝鍚楋紝鐩存帴鎷垮嚭鏉ユ瘮灝辨槸浜嗭紝鍏跺疄闈炰篃銆備笅鏂囧紩鑷猤oogle鎼滅儲緇撴灉錛屽嚭澶勪笉璇︼紝楂樻墜鍙互鏃犺錛岃彍鑿滅暀涓嬶紝璁板緱鍋氬ソ絎旇銆?br>棣栧厛緇欎釜鎻愮ず錛氶鐩腑瑕佹眰鐨勬槸闆跺兼瘮杈冿紝鑰岄潪涓?榪涜姣旇緝錛屽湪C++閲?#8220;闆跺?#8221;鐨勮寖鍥村彲灝卞ぇ浜嗭紝鍙互鏄?錛?0.0 錛?FALSE鎴栬?#8220;絀烘寚閽?#8221;銆?br>int鍨嬪彉閲?n 涓?#8220;闆跺?#8221;姣旇緝鐨?if 璇彞灝辨槸錛?/strong>

if ( n == 0 )

if ( n != 0 )

濡備笅鍐欐硶鍧囧睘涓嶈壇椋庢牸.銆?br>
if ( n )               // 浼氳浜鴻瑙?n 鏄竷灝斿彉閲?br>
if ( !n   )

 BOOL flag 涓?#8220;闆跺?#8221;姣旇緝鐨?if 璇彞:

鏍?鎹竷灝旂被鍨嬬殑璇箟錛岄浂鍊間負“鍋?#8221;錛堣涓篎ALSE錛夛紝浠諱綍闈為浂鍊奸兘鏄?#8220;鐪?#8221;錛堣涓篢RUE錛夈俆RUE 鐨勫肩┒绔熸槸浠涔堝茍娌℃湁緇熶竴鐨勬爣鍑嗐備緥濡俈isual C++ 灝員RUE 瀹氫箟涓?錛岃孷isual Basic 鍒欏皢TRUE 瀹氫箟涓?1銆傛墍浠ユ垜浠笉鍙互灝嗗竷灝斿彉閲忕洿鎺ヤ笌TRUE銆丗ALSE 鎴栬?銆? 榪涜姣旇緝銆?br>
鏍囧噯絳旀錛?br>
if ( flag )

if ( !flag )

濡備笅鍐欐硶鍧囧睘涓嶈壇椋庢牸銆?br>
if (flag == TRUE)

if (flag == 1 )

if (flag == FALSE)

if (flag == 0)

float x 涓?#8220;闆跺?#8221;姣旇緝鐨?if 璇彞:
鍗冧竾瑕佺暀鎰忥紝鏃犺鏄痜loat 榪樻槸double 綾誨瀷鐨勫彉閲忥紝閮芥湁綺懼害闄愬埗錛岄兘涓嶅彲浠ョ敤“==”鎴?#8220;錛?”涓庝換浣曟暟瀛楁瘮杈冿紝搴旇璁炬硶杞寲鎴?#8220;>=”鎴?#8220;<=”褰㈠紡銆?涓轟粈涔堬紵鏂囩珷涔嬪悗鏈夎緇嗙殑璁ㄨ錛屽彲鍙傝?

鍋囪嫻偣鍙橀噺鐨勫悕瀛椾負x錛屽簲褰撳皢

if (x == 0.0)         // 闅愬惈閿欒鐨勬瘮杈?br>
杞寲涓?br>
if ((x>=-EPSINON) && (x<=EPSINON))

鍏朵腑EPSINON 鏄厑璁哥殑璇樊錛堝嵆綺懼害錛夈?br>
鏍囧噯絳旀紺轟緥錛?br>
const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

濡備笅鏄敊璇殑鍐欐硶銆?br>
if (x == 0.0)

if (x != 0.0) 

char *p 涓?#8220;闆跺?#8221;姣旇緝鐨?if 璇彞:

鏍囧噯絳旀錛?br>
if (p == NULL)

if (p != NULL)

濡備笅鍐欐硶鍧囧睘涓嶈壇椋庢牸銆?br>
if (p == 0)         // 瀹規槗璁╀漢璇Вp鏄暣鍨嬪彉閲?br>
if (p != 0)

if (p)                 // 瀹規槗璁╀漢璇Вp鏄痓ool鍨嬪彉閲?br>
if (!p)

浠?涓婄殑涓嶈壇椋庢牸寰堝閮借兘閫氳繃緙栬瘧錛屼絾鏄鍙ュ茍涓嶈兘寰堝ソ鐨勮〃杈句笌闆跺艱繘琛屾瘮杈冪殑閫昏緫渚濇嵁銆備竴鑸殑錛屽鏋滄兂鐢?if 璇彞鍒ゆ柇涓涓彉閲忕殑鐪熷亣錛屽簲璇ョ洿鎺ヤ嬌鐢╥f錛坴ar錛夈乮f錛堬紒var錛夛紝琛ㄦ槑姝?if 璇彞鐨勫姛鑳戒負“閫昏緫”鍒ゆ柇錛涘鏋滄兂鐢?if 璇彞鍒ゆ柇涓涓暟鍊煎瀷鍙橀噺錛坰hort銆乮nt銆乴ong絳夛級錛屽簲璇ョ敤if錛坴ar==0錛夛紝琛ㄦ槑姝?if 璇彞鏄皢鍙橀噺涓?榪涜“鏁板?#8221;涓婄殑姣旇緝錛涜屾瑙嗘寚閽堟槸鍚︿負絀哄垯閫傚疁鐢╥f錛坴ar==NULL錛夛紝榪欐槸涓縐嶅緢濂界殑緙栫▼涔犳儻銆?br>
嫻偣鍨嬪彉閲忓茍涓嶇簿紜紝鎵浠ヤ笉鍙皢float鍙橀噺鐢?#8220;==”鎴?#8220;錛?”涓庢暟瀛楁瘮杈冿紝搴旇璁炬硶杞寲鎴?#8220;>=”鎴?#8220;<=”褰㈠紡銆傚鏋滃啓鎴恑f 錛坸 == 0.0錛夛紝鍒欏垽涓洪敊錛屽緱0鍒嗐備互涓嬬粰鍑鴻緇嗗師鍥狅細
嫻偣鏁板湪鍐呭瓨涓殑瀛樿串鏈哄埗鍜屾暣鍨嬫暟涓嶅悓錛屾湁鑸嶅叆璇樊錛屽湪璁$畻鏈轟腑鐢ㄤ互榪戜技琛ㄧず浠繪剰鏌愪釜瀹炴暟銆傚叿浣撶殑璇達紝榪欎釜瀹炴暟鐢變竴涓暣鏁版垨瀹氱偣鏁幫紙鍗沖熬鏁幫級涔樹互鏌愪釜鍩烘暟錛堣綆楁満涓氬父鏄?錛夌殑鏁存暟嬈″箓寰楀埌錛岃繖縐嶈〃紺烘柟娉曠被浼間簬鍩烘暟涓?0鐨勭瀛﹁鏁版硶銆?
鎵浠ユ誕鐐規暟鍦ㄨ繍綆楄繃鎴愬姛榪愮畻閫氬父浼撮殢鐫鍥犱負鏃犳硶綺劇‘琛ㄧず鑰岃繘琛岀殑榪戜技鎴栬垗鍏ャ備絾鏄繖縐嶈璁$殑濂藉鏄彲浠ュ湪鍥哄畾鐨勯暱搴︿笂瀛樺偍鏇村ぇ鑼冨洿鐨勬暟銆?
渚嬪錛屼竴涓寚鏁拌寖鍥翠負±4鐨?浣嶅崄榪涘埗嫻偣鏁板彲浠ョ敤鏉ヨ〃紺?3210錛?.321鎴?.0004321錛屼絾鏄病鏈夎凍澶熺殑綺懼害鏉ヨ〃紺?32.123鍜?3212.3錛堝繀欏昏繎浼間負432.1鍜?3210錛夈傚綋鐒訛紝瀹為檯浣跨敤鐨勪綅鏁伴氬父榪滃ぇ浜?銆?
鎵浠ユ誕鐐規暟涓嶈兘澶熷垽鏂浉絳夛紝鍍?if(x==0)鐨勮繖鏍風殑緙栫爜鏄笉鎬繪槸姝g‘鐨勶紝鎴戜滑鍦ㄥ垽鏂誕鐐規暟鐩哥瓑鏃訛紝鎺ㄨ崘鐢ㄨ寖鍥存潵紜畾錛岃嫢x鍦ㄦ煇涓鑼冨洿鍐咃紝鎴戜滑灝辮涓虹浉絳夛紝鑷充簬鑼冨洿鎬庝箞瀹氫箟錛岃鐪嬪疄闄呮儏鍐佃屽凡浜嗭紝float錛屽拰double 鍚勬湁涓嶅悓
鎵浠onst float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON) 榪欐牱鍒ゆ柇鏄彲鍙栫殑
鑷充簬涓轟粈涔堝彇0.00001錛屽彲浠ヨ嚜宸辨寜瀹為檯鎯呭喌瀹氫箟

鍐嶇湅涓嬮潰CSDN涓婄殑鍥炵瓟

寮曠敤
#define   E   1.0E-6  

float   x   涓?#8220;闆跺?#8221;姣旇緝鐨刬f  
-----------------------  

嫻偣鏁版槸涓嶅彲浠ョ洿鎺ユ瘮杈冨ぇ灝忕殑錛屽洜涓烘槸闈炵簿紜瓨鍌紝鍙兘璁劇疆涓涓簿搴︼紝鐒跺悗鍦ㄥ厑璁歌宸唴鐨勫氨璁や負鏄浉絳夌殑錛涘嫻偣鍨嬫暟姣旇緝鐨勬椂鍊欑敤==鏄笉瀵圭殑  

#define   E   0.000001      

fabs((a+b)+c)   -   ((b+a)+c))


蹇冪窘 2010-08-26 08:36 鍙戣〃璇勮
]]>
C++楂樻晥緙栫▼蹇犲憡 http://m.shnenglu.com/tdweng/articles/124633.html蹇冪窘蹇冪窘Wed, 25 Aug 2010 02:26:00 GMThttp://m.shnenglu.com/tdweng/articles/124633.htmlhttp://m.shnenglu.com/tdweng/comments/124633.htmlhttp://m.shnenglu.com/tdweng/articles/124633.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/124633.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/124633.html
涓銆?include “filename.h”鍜?include <filename.h>鐨勫尯鍒?/span>
#include “filename.h”鏄寚緙栬瘧鍣ㄥ皢浠庡綋鍓嶅伐浣滅洰褰曚笂寮濮嬫煡鎵炬鏂囦歡
#include <filename.h>鏄寚緙栬瘧鍣ㄥ皢浠庢爣鍑嗗簱鐩綍涓紑濮嬫煡鎵炬鏂囦歡

浜屻佸ご鏂囦歡鐨勪綔鐢?/span>
鍔犲己瀹夊叏媯嫻?br>閫氳繃澶存枃浠跺彲鑳芥柟渚垮湴璋冪敤搴撳姛鑳斤紝鑰屼笉蹇呭叧蹇冨叾瀹炵幇鏂瑰紡

涓夈? , &淇グ絎︾殑浣嶇疆
int *i,j; // better for read
 i = new int(0);
 j = 0;
 int *&y = i; // pointer's reference
瀵逛簬*鍜?amp;淇グ絎︼紝涓轟簡閬垮厤璇В錛屾渶濂藉皢淇グ絎︾揣闈犲彉閲忓悕
鍥涖乮f璇彞
涓嶈灝嗗竷灝斿彉閲忎笌浠諱綍鍊艱繘琛屾瘮杈冿紝閭d細寰堝鏄撳嚭閿欑殑銆?br>鏁村艦鍙橀噺蹇呴』瑕佹湁綾誨瀷鐩稿悓鐨勫艱繘琛屾瘮杈?br>嫻偣鍙橀噺鏈濂藉皯姣旂浉絳夛紝鍙互閫氳繃姹傚樊涓庤緝灝忕殑鏁版瘮杈?br>鎸囬拡鍙橀噺瑕佸拰NULL榪涜姣旇緝錛屼笉瑕佸拰甯冨皵鍨嬪拰鏁村艦姣旇緝

浜斻乧onst鍜?define鐨勬瘮杈?/span>
const鏈夋暟鎹被鍨嬶紝#define娌℃湁鏁版嵁綾誨瀷
涓埆緙栬瘧鍣ㄤ腑const鍙互榪涜璋冭瘯錛?define涓嶅彲浠ヨ繘琛岃皟璇?br>鍦ㄧ被涓畾涔夊父閲忔湁涓ょ鏂瑰紡
1銆?鍦ㄧ被鍦ㄥ0鏄庡父閲忥紝浣嗕笉璧嬪鹼紝鍦ㄦ瀯閫犲嚱鏁板垵濮嬪寲琛ㄤ腑榪涜璧嬪鹼紱錛堝父閲忓拰寮曠敤綾誨瀷鐨勬垚鍛樺彉閲忓繀欏婚氳繃鍒濆鍖栧垪琛ㄦ潵鍒濆鍖栬祴鍊鹼級
2銆?鐢ㄦ灇涓句唬鏇縞onst甯擱噺銆?br>
鍏丆++鍑芥暟涓肩殑浼犻掓柟寮?/span>
鏈変笁縐嶆柟寮忥細鍊間紶閫?Pass by value)銆佹寚閽堜紶閫?Pass by pointer)銆佸紩鐢ㄤ紶閫?Pass by reference)
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
濡傛灉杈撳叆鍙傛暟鏄互鍊間紶閫掔殑璇濓紝鏈濂戒嬌鐢ㄥ紩鐢ㄤ紶閫掍唬鏇匡紝鍥犱負寮曠敤浼犻掔渷鍘諱簡涓存椂瀵硅薄鐨勬瀯閫犲拰鏋愭瀯
鍑芥暟鐨勮繑鍥炵被鍨嬩笉鑳界渷鐣ワ紝灝辯畻娌℃湁涔熻鍔犱釜void
涓冦佸嚱鏁頒綋涓殑鎸囬拡鎴栧紩鐢ㄥ父閲忎笉鑳借榪斿洖
Char *func(void)
{
 char str[]=”Hello Word”;
 //榪欎釜鏄笉鑳借榪斿洖鐨勶紝鍥犱負str鏄釜鎸囧畾鍙橀噺錛屼笉鏄竴鑸殑鍊鹼紝鍑芥暟緇撴潫鍚庝細琚敞閿鎺?br>//瀹冩槸瀛樻斁鍦ㄦ爤涓紝鍑芥暟緇撴潫鍚庤娉ㄩ攢鎺?br>//鍙互鏀逛負 char *str = "HelloWorld",鍥犱負鎸囬拡瀛樻斁鍦ㄥ叏灞浣滅敤鍩熶腑錛屽嚱鏁扮粨鏉熷悗涓嶄細琚敞閿
 return str;
}
鍑芥暟浣撳唴鐨勬寚閽堝彉閲忓茍涓嶄細闅忕潃鍑芥暟鐨勬秷浜¤岃嚜鍔ㄩ噴鏀?br>
鍏佷竴涓唴瀛樻嫹璐濆嚱鏁扮殑瀹炵幇浣?/span>
void *memcpy(void *pvTo,const void *pvFrom,size_t size)

{

 assert((pvTo!=NULL)&&(pvFrom!=NULL));

 byte *pbTo=(byte*)pvTo; //闃叉鍦板潃琚敼鍙?br>
 byte *pbFrom=(byte*)pvFrom;

 while (size-- >0)

 pbTo++ = pbForm++;

 return pvTo;

}
涔濄佸唴瀛樼殑鍒嗛厤鏂瑰紡
鍒嗛厤鏂瑰紡鏈変笁縐嶏紝璇瘋浣忥紝璇翠笉瀹氶偅澶╁幓闈㈣瘯鐨勬椂鍊欏氨浼氭湁浜洪棶浣犺繖闂
1銆?闈欐佸瓨鍌ㄥ尯錛屾槸鍦ㄧ▼搴忕紪璇戞椂灝卞凡緇忓垎閰嶅ソ鐨勶紝鍦ㄦ暣涓繍琛屾湡闂撮兘瀛樺湪錛屽鍏ㄥ眬鍙橀噺銆佸父閲忋傦紙紼嬪簭緙栬瘧鍚庤繍琛屾椂鍖呭惈code鍜宒ata涓ら儴鍒嗭紝鍏朵腑data鍗充負闈欐佸瓨鍌ㄥ尯鍒嗛厤錛岀▼搴忎竴寮濮嬭繍琛屼究鍒嗛厤鏁翠釜data鐨勪笢涓滐級
2銆?鏍堜笂鍒嗛厤錛屽嚱鏁板唴鐨勫眬閮ㄥ彉閲忓氨鏄粠榪欏垎閰嶇殑錛屼絾鍒嗛厤鐨勫唴瀛樺鏄撴湁闄愩?br>3銆?鍫嗕笂鍒嗛厤錛屼篃縐板姩鎬佸垎閰嶏紝濡傛垜浠敤new,malloc鍒嗛厤鍐呭瓨錛岀敤delete,free鏉ラ噴鏀劇殑鍐呭瓨銆?br>
鍗併佸唴瀛樺垎閰嶇殑娉ㄦ剰浜嬮」
鐢╪ew鎴杕alloc鍒嗛厤鍐呭瓨鏃訛紝蹇呴』瑕佸姝ゆ寚閽堣祴鍒濆箋?br>鐢╠elete 鎴杅ree閲婃斁鍐呭瓨鍚庯紝蹇呴』瑕佸皢鎸囬拡鎸囧悜NULL
涓嶈兘淇敼鎸囧悜甯擱噺鐨勬寚閽堟暟鎹?br>鍗佷竴銆佸唴瀹瑰鍒朵笌姣旇緝
//鏁扮粍……
char a[]=”Hello Word!”;
char b[10];
strcpy(b,a);
if (strcmp(a,b)==0)
{}
//鎸囬拡……
char a[]=”Hello Word!”;
char *p;
p=new char[strlen(a)+1];
strcpy(p,a);
if (strcmp(p,a)==0)
{}

鍗佷簩銆乻izeof鐨勯棶棰?/span>
璁頒綇涓鐐癸紝C++鏃犳硶鐭ラ亾鎸囬拡鎵鎸囧璞$殑澶у皬錛屾寚閽堢殑澶у皬姘歌繙涓?瀛楄妭
char a[]=”Hello World!”
char *p=a;
count<<sizeof(a)<<end; //12瀛楄妭
count<<sizeof(p)<<endl; //4瀛楄妭
鑰屼笖錛屽湪鍑芥暟涓紝鏁扮粍鍙傛暟閫鍖栦負鎸囬拡錛屾墍浠ヤ笅闈㈢殑鍐呭姘歌繙杈撳嚭涓?
void fun(char a[1000])
{
count<<sizeof(a)<<endl; //杈撳嚭4鑰屼笉鏄?000
}

鍗佷笁銆佸叧浜庢寚閽?/span>
1銆?鎸囬拡鍒涘緩鏃跺繀欏昏鍒濆鍖?br>2銆?鎸囬拡鍦╢ree 鎴杁elete鍚庡繀欏葷疆涓篘ULL
3銆?鎸囬拡鐨勯暱搴﹂兘涓?瀛楄妭
4銆侀噴鏀懼唴瀛樻椂錛屽鏋滄槸鏁扮粍鎸囬拡錛屽繀欏昏閲婃斁鎺夋墍鏈夌殑鍐呭瓨錛屽
char *p=new char[100];
strcpy(p,”Hello World”);
delete []p; //娉ㄦ剰鍓嶉潰鐨勶薊錛藉彿
p=NULL;
5銆佹暟緇勬寚閽堢殑鍐呭涓嶈兘瓚呰繃鏁扮粍鎸囬拡鐨勬渶澶у鏄撱?br>濡?
char *p=new char[5];
strcpy(p,”Hello World”); //鎶ラ敊 鐩爣瀹規槗涓嶅澶?br>delete []p; //娉ㄦ剰鍓嶉潰鐨勶薊錛藉彿
p=NULL;
鍗佸洓銆佸叧浜巑alloc/free 鍜宯ew /delete
malloc/free 鏄疌/C+鐨勫唴瀛樺垎閰嶇錛宯ew /delete鏄疌++鐨勫唴瀛樺垎閰嶇銆?br>娉ㄦ剰錛歮alloc/free鏄簱鍑芥暟錛宯ew/delete鏄繍綆楃
malloc/free涓嶈兘鎵ц鏋勯犲嚱鏁頒笌鏋愭瀯鍑芥暟錛岃宯ew/delete鍙互
new/delete涓嶈兘鍦–涓婅繍琛岋紝鎵浠alloc/free涓嶈兘琚窐姹?br>涓よ呴兘蹇呴』瑕佹垚瀵逛嬌鐢?br>C++涓彲浠ヤ嬌鐢╛set_new_hander鍑芥暟鏉ュ畾涔夊唴瀛樺垎閰嶅紓甯哥殑澶勭悊


鍗佷簲銆侊跡++鐨勭壒鎬?/span>
錛?+鏂板鍔犳湁閲嶈澆(overload)錛屽唴鑱旓紙inline錛夛紝Const錛孷irtual鍥涚鏈哄埗
閲嶈澆鍜屽唴鑱旓細鍗沖彲鐢ㄤ簬鍏ㄥ眬鍑芥暟錛屼篃鍙敤浜庣被鐨勬垚鍛樺嚱鏁幫紱
Const鍜孷irtual錛氬彧鍙敤浜庣被鐨勬垚鍛樺嚱鏁幫紱
閲嶈澆錛氬湪鍚屼竴綾諱腑錛屽嚱鏁板悕鐩稿悓鐨勫嚱鏁般傜敱涓嶅悓鐨勫弬鏁板喅瀹氳皟鐢ㄩ偅涓嚱鏁般傚嚱鏁板彲瑕佷笉鍙Virtual鍏抽敭瀛椼傚拰鍏ㄥ眬鍑芥暟鍚屽悕鐨勫嚱鏁頒笉鍙噸杞姐傚鏋滃湪綾諱腑璋冪敤鍚屽悕鐨勫叏灞鍑芥暟錛屽繀欏葷敤鍏ㄥ眬寮曠敤絎﹀彿::寮曠敤銆?br>瑕嗙洊鏄寚媧劇敓綾誨嚱鏁拌鐩栧熀綾誨嚱鏁幫細鍑芥暟鍚嶇浉鍚岋紱鍙傛暟鐩稿悓錛涘熀綾誨嚱鏁板繀欏繪湁Virtual鍏抽敭瀛楋紱涓嶅悓鐨勮寖鍥?媧劇敓綾誨拰鍩虹被)銆?br>闅愯棌鏄寚媧劇敓綾誨睆钄戒簡鍩虹被鐨勫悓鍚嶅嚱鏁扮浉鍚?br>1銆?鍑芥暟鍚嶇浉鍚岋紝浣嗗弬鏁頒笉鍚岋紝姝ゆ椂涓嶈鍩虹被鏈夋棤Virtual鍏抽敭瀛楋紝鍩虹被鍑芥暟灝嗚闅愯棌銆?br>2銆?鍑芥暟鍚嶇浉鍚岋紝鍙傛暟涔熺浉鍚岋紝浣嗗熀綾繪棤Virtual鍏抽敭瀛?鏈夊氨鏄鐩?錛屽熀綾誨嚱鏁板皢琚殣钘忋?br>鍐呰仈錛歩nline鍏抽敭瀛楀繀欏諱笌瀹氫箟浣撴斁鍦ㄤ竴璧鳳紝鑰屼笉鏄崟鍗曟斁鍦ㄥ0鏄庝腑銆?br>Const錛歝onst鏄痗onstant鐨勭緝鍐欙紝“鎭掑畾涓嶅彉”鐨勬剰鎬濄傝const淇グ鐨勪笢瑗塊兘鍙楀埌寮哄埗淇濇姢錛屽彲浠ラ闃叉剰澶栫殑鍙樺姩錛岃兘鎻愰珮紼嬪簭鐨勫仴澹с?br>1銆?鍙傛暟鍋氳緭鍏ョ敤鐨勬寚閽堝瀷鍙傛暟錛屽姞涓奵onst鍙槻姝㈣鎰忓鏀瑰姩銆?br>2銆?鎸夊煎紩鐢ㄧ殑鐢ㄦ埛綾誨瀷鍋氳緭鍏ュ弬鏁版椂錛屾渶濂藉皢鎸夊間紶閫掔殑鏀逛負寮曠敤浼犻掞紝騫跺姞涓奵onst鍏抽敭瀛楋紝鐩殑鏄負浜嗘彁楂樻晥鐜囥傛暟鎹被鍨嬩負鍐呴儴綾誨瀷鐨勫氨娌″繀瑕佸仛榪欎歡浜嬫儏錛涘錛?br>灝唙oid Func(A a) 鏀逛負void Func(const A &a)銆?br>鑰寁oid func(int a)灝辨病蹇呰鏀規垚void func(const int &a);
3銆?緇欒繑鍥炲間負鎸囬拡綾誨瀷鐨勫嚱鏁板姞涓奵onst錛屼細浣垮嚱鏁拌繑鍥炲間笉鑳借淇敼錛岃祴緇欑殑鍙橀噺涔熷彧鑳芥槸const鍨嬪彉閲忋傚錛氬嚱鏁癱onst char*GetString(void); char *str=GetString()灝嗕細鍑洪敊銆傝宑onst char *str=GetString()灝嗘槸姝g‘鐨勩?br>4銆?Const鎴愬憳鍑芥暟鏄寚姝ゅ嚱鏁頒綋鍐呭彧鑳借皟鐢–onst鎴愬憳鍙橀噺錛屾彁楂樼▼搴忕殑閿.鎬с傚澹版槑鍑芥暟 int GetCount(void) const;姝ゅ嚱鏁頒綋鍐呭氨鍙兘璋冪敤Const鎴愬憳鍙橀噺銆?br>Virtual錛氳櫄鍑芥暟錛氭淳鐢熺被鍙互瑕嗙洊鎺夌殑鍑芥暟錛岀函铏氬嚱鏁幫細鍙槸涓┖鍑芥暟錛屾病鏈夊嚱鏁板疄鐜頒綋錛?br>鍗佸叚銆乪xtern“C”鏈変粈涔堜綔鐢紵
Extern “C”鏄敱錛o紜錛嬫彁渚涚殑涓涓繛鎺ヤ氦鎹㈡寚瀹氱鍙鳳紝鐢ㄤ簬鍛婅瘔錛o紜錛嬭繖孌典唬鐮佹槸錛e嚱鏁般傝繖鏄洜涓篊++緙栬瘧鍚庡簱涓嚱鏁板悕浼氬彉寰楀緢闀匡紝涓嶤鐢熸垚鐨勪笉涓鑷達紝閫犳垚錛o紜錛嬩笉鑳界洿鎺ヨ皟鐢–鍑芥暟錛屽姞涓奺xtren “c”鍚庯紝C++灝辮兘鐩存帴璋冪敤C鍑芥暟浜嗐?br>Extern “C”涓昏浣跨敤姝hDLL鍑芥暟鐨勫紩鐢ㄥ拰瀵煎嚭 鍜?鍦–++鍖呭惈C鍑芥暟鎴朇澶存枃浠舵椂浣跨敤銆備嬌鐢ㄦ椂鍦ㄥ墠闈㈠姞涓奺xtern “c” 鍏抽敭瀛楀嵆鍙?br>鍗佷竷銆佹瀯閫犲嚱鏁頒笌鏋愭瀯鍑芥暟
媧劇敓綾葷殑鏋勯犲嚱鏁板簲鍦ㄥ垵濮嬪寲琛ㄩ噷璋冪敤鍩虹被鐨勬瀯閫犲嚱鏁幫紱
媧劇敓綾誨拰鍩虹被鐨勬瀽鏋勫嚱鏁板簲鍔燰irtual鍏抽敭瀛椼?br>涓嶈灝忕湅鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟錛屽叾瀹炵紪璧鋒潵榪樻槸涓嶅鏄撱?
#include <iostream.h>
class Base
{
public:
virtual ~Base() { cout<< "~Base" << endl ; }
};

class Derived : public Base
{
public:
virtual ~Derived() { cout<< "~Derived" << endl ; }
};

void main(void)
{
Base * pB = new Derived; // upcast
delete pB;
}
杈撳嚭緇撴灉涓猴細
~Derived
~Base

濡傛灉鏋愭瀯鍑芥暟涓嶄負铏氾紝閭d箞杈撳嚭緇撴灉涓?br>~Base
鍗佸叓銆?IFNDEF/#DEFINE/#ENDIF鏈変粈涔堜綔鐢?/span>
浠挎璇ュご鏂囦歡琚噸澶嶅紩鐢?nbsp;
鍗佷節銆佷笁緇存暟緇勪竴嬈¤緭鍑?br> int b[2][3][4]={{{0,1,2,3,},{4,5,6,7},{8,9,10,11}},{{12,13,14,15},{16,17,18,19},{20,21,22,23}}};
    int i,j;
    for(i=0,j=1;i<24;i++,j++)
    {
        printf("%3d",b[i/12][i%12/4][i%12%4]);
        if(j%4==0)
            printf("\n");
    }


蹇冪窘 2010-08-25 10:26 鍙戣〃璇勮
]]>
VC _T鐨勭敤閫?/title><link>http://m.shnenglu.com/tdweng/articles/124436.html</link><dc:creator>蹇冪窘</dc:creator><author>蹇冪窘</author><pubDate>Mon, 23 Aug 2010 08:46:00 GMT</pubDate><guid>http://m.shnenglu.com/tdweng/articles/124436.html</guid><wfw:comment>http://m.shnenglu.com/tdweng/comments/124436.html</wfw:comment><comments>http://m.shnenglu.com/tdweng/articles/124436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tdweng/comments/commentRss/124436.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tdweng/services/trackbacks/124436.html</trackback:ping><description><![CDATA[<p>VC++閲岄潰瀹氫箟瀛楃涓茬殑鏃跺欙紝鐢╛T鏉ヤ繚璇佸吋瀹規с俈C++鏀寔ascii鍜寀nicode涓ょ瀛楃綾誨瀷錛岀敤_T鍙互淇濊瘉浠巃scii緙栫爜綾誨瀷杞崲鍒皍nicode緙栫爜綾誨瀷鐨勬椂鍊欙紝紼嬪簭涓嶉渶瑕佷慨鏀廣?/p> <p>濡傛灉灝嗘潵浣犱笉鎵撶畻鍗囩駭鍒皍nicode錛岄偅涔堜篃涓嶉渶瑕乢T銆?/p> <p>_t("hello world")</p> <p>鍦╝nsi鐨勭幆澧冧笅錛屽畠鏄痑nsi鐨勶紝濡傛灉鍦╱nicode涓嬶紝閭d箞瀹冨皢鑷姩瑙i噴涓哄弻瀛楄妭瀛楃涓詫紝鏃nicode緙栫爜銆?/p> <p>榪欐牱鍋氱殑濂藉錛屼笉綆℃槸ansi鐜錛岃繕鏄痷nicode鐜錛岄兘閫傜敤銆?/p> <p>閭d箞鍦╒C++涓紝瀛楃涓瞋T("ABC")鍜屼竴涓櫘閫氱殑瀛楃涓?ABC"鏈変粈涔堝尯鍒憿錛?/p> <p>_T("ABC")</p> <p>濡傛灉瀹氫箟浜唘nicode錛屽畠灝嗚〃紺轟負L"ABC"錛屾瘡涓瓧絎︿負16浣嶏紝瀹藉瓧絎︿覆銆?/p> <p>濡傛灉娌℃湁瀹氫箟unicode錛屽畠灝辨槸ascii鐨?ABC"錛屾瘡涓瓧絎︿負8浣嶃?/p> <p>鐩稿綋浜?/p> <p>#ifdef _UNICODE</p> <p>#define _T("ABC") L"ABC"</p> <p>#else</p> <p>#define _T("ABC") "ABC"</p> <p>#endif</p> <p>_T("ABC")涓殑涓涓瓧絎﹀拰姹夊瓧涓鏍鳳紝鍗犱袱涓瓧鑺傦紝鑰屽湪"ABC"涓紝鑻辨枃瀛楃鍗犱竴涓瓧鑺傦紝姹夊瓧鍗犱袱涓瓧鑺傘?/p> <p>涓銆?鍦ㄥ瓧絎︿覆鍓嶅姞涓涓狶浣滅敤:</p> <p>   濡?L"鎴戠殑瀛楃涓?   琛ㄧず灝咥NSI瀛楃涓茶漿鎹㈡垚unicode鐨勫瓧絎︿覆錛屽氨鏄瘡涓瓧絎﹀崰鐢ㄤ袱涓瓧鑺傘?/p> <p>strlen("asd") =   3;</p> <p>strlen(L"asd") =   6;</p> <p>   浜屻?nbsp;  _T瀹忓彲浠ユ妸涓涓紩鍙峰紩璧鋒潵鐨勫瓧絎︿覆錛屾牴鎹綘鐨勭幆澧冭緗紝浣垮緱緙栬瘧鍣ㄤ細鏍規嵁緙栬瘧鐩爣鐜閫夋嫨鍚堥傜殑錛圲nicode榪樻槸ANSI錛夊瓧絎﹀鐞嗘柟寮?/p> <p>   濡傛灉浣犲畾涔変簡UNICODE錛岄偅涔坃T瀹忎細鎶婂瓧絎︿覆鍓嶉潰鍔犱竴涓狶銆傝繖鏃?_T("ABCD") 鐩稿綋浜?L"ABCD" 錛岃繖鏄瀛楃涓層?/p> <p>   濡傛灉娌℃湁瀹氫箟錛岄偅涔坃T瀹忎笉浼氬湪瀛楃涓插墠闈㈠姞閭d釜L錛宊T("ABCD") 灝辯瓑浠蜂簬 "ABCD"</p> <p>涓夈乀EXT,_TEXT 鍜宊T 涓鏍風殑</p> <p>濡備笅闈笁璇彞錛?/p> <p>TCHAR szStr1[] = TEXT("str1");</p> <p>char szStr2[] = "str2";</p> <p>WCHAR szStr3[] = L("str3");</p> <p>閭d箞絎竴鍙ヨ瘽鍦ㄥ畾涔変簡UNICODE鏃朵細瑙i噴涓虹涓夊彞璇濓紝娌℃湁瀹氫箟鏃跺氨絳変簬絎簩鍙ヨ瘽銆?nbsp; </p> <p>浣嗕簩鍙ヨ瘽鏃犺鏄惁瀹氫箟浜哢NICODE閮芥槸鐢熸垚涓涓狝NSI瀛楃涓詫紝鑰岀涓夊彞璇濇繪槸鐢熸垚UNICODE瀛楃涓層?/p> <p>涓轟簡紼嬪簭鐨勫彲縐繪鎬э紝寤鴻閮界敤絎竴縐嶈〃紺烘柟娉曘?/p> <p>浣嗗湪鏌愪簺鎯呭喌涓嬶紝鏌愪釜瀛楃蹇呴』涓篈NSI鎴朥NICODE錛岄偅灝辯敤鍚庝袱縐嶆柟娉?br><br></p> <p>      char :鍗曞瓧鑺傚彉閲忕被鍨嬶紝鏈澶氳〃紺?56涓瓧絎?/p> <p>      wchar_t :瀹藉瓧鑺傚彉閲忕被鍨嬶紝鐢ㄤ簬琛ㄧずUnicode瀛楃</p> <p>      瀹冨疄闄呭畾涔夊湪<string.h>閲岋細typedef unsigned short wchar_t銆?/p> <p>      涓轟簡璁╃紪璇戝櫒璇嗗埆Unicode瀛楃涓詫紝蹇呴』浠ュ湪鍓嶉潰鍔犱竴涓?#8220;L”,瀹氫箟瀹藉瓧鑺傜被鍨嬫柟娉曞涓嬶細</p> <p>     wchar_t c = `A' ; <br>     wchar_t * p = L"Hello!" ; <br>     wchar_t a[] = L"Hello!" ; </p> <p>     鍏朵腑錛屽瀛楄妭綾誨瀷姣忎釜鍙橀噺鍗犵敤2涓瓧鑺傦紝鏁呬笂榪版暟緇刟鐨剆izeof(a) = 14</p> <p>     TCHAR / _T( ) : <br>      濡傛灉鍦ㄧ▼搴忎腑鏃㈠寘鎷珹NSI鍙堝寘鎷琔nicode緙栫爜錛岄渶瑕佸寘鎷ご鏂囦歡tchar.h銆俆CHAR鏄畾涔夊湪璇ュご鏂囦歡涓殑瀹忥紝瀹冭浣犳槸鍚﹀畾涔変簡   <br>     NICODE瀹忚屽畾涔夋垚錛?<br>瀹氫箟浜哶UNICODE錛?nbsp;   typedef wchar_t TCHAR ; <br>娌℃湁瀹氫箟_UNICODE錛?typedef char TCHAR ; </p> <p>#ifdef UNICODE <br>typedef char TCHAR; <br>#else <br>typede wchar_t TCHAR; <br>#endif <br>_T( )涔熸槸瀹氫箟鍦ㄨ澶存枃浠朵腑鐨勫畯錛岃鏄惁瀹氫箟浜哶UNICODE瀹忚屽畾涔夋垚錛?<br>瀹氫箟浜哶UNICODE錛?nbsp;   #define _T(x) L##x <br>娌℃湁瀹氫箟_UNICODE錛?#define _T(x) x <br>娉ㄦ剰錛氬鏋滃湪紼嬪簭涓嬌鐢ㄤ簡TCHAR錛岄偅涔堝氨涓嶅簲璇ヤ嬌鐢ˋNSI鐨剆trXXX鍑芥暟鎴栬匲nicode鐨剋csXXX鍑芥暟浜嗭紝鑰屽繀欏諱嬌鐢╰char.h涓畾涔夌殑_tcsXXX鍑芥暟銆?/p> <p>浠trcpy鍑芥暟涓轟緥瀛愶紝鎬葷粨涓涓嬶細<br> </p> <div><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">//濡傛灉浣犳兂浣跨敤ANSI瀛楃涓詫紝閭d箞璇蜂嬌鐢ㄨ繖涓濂楀啓娉曪細 <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">char szString[100]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">strcpy(szString,"test"); <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">//濡傛灉浣犳兂浣跨敤Unicode瀛楃涓詫紝閭d箞璇蜂嬌鐢ㄨ繖涓濂楋細 <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">wchar_t szString[100]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">wcscpy(szString,L"test"); <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">//濡傛灉浣犳兂閫氳繃瀹氫箟_UNICODE瀹忥紝鑰岀紪璇慉NSI鎴栬匲nicode瀛楃涓蹭唬鐮侊細 <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">TCHAR szString[100]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">_tcscpy(szString,_TEXT("test"));</div> <p> <br><font size=2>char鏄疌璇█鏍囧噯鏁版嵁綾誨瀷錛屽瓧絎﹀瀷錛岃嚦浜庣敱鍑犱釜瀛楄妭緇勬垚閫氬父鐢辯紪璇戝櫒鍐沖畾錛屼竴鑸竴涓瓧鑺傘俉indows涓轟簡娑堥櫎鍚?緙栬瘧鍣ㄧ殑宸埆錛岄噸鏂板畾涔変簡涓浜涙暟鎹被鍨嬶紝浣犳彁鍒頒簡鍙﹀鍑犱釜綾誨瀷閮芥槸榪欐牱銆?br>CHAR涓哄崟瀛楄妭瀛楃銆?br>榪樻湁涓猈CHAR涓篣nicode瀛楃錛屽嵆涓嶈涓嫳鏂囷紝姣?涓瓧鏈変袱涓瓧鑺傜粍鎴愩?br>濡傛灉褰撳墠緙栬瘧鏂瑰紡涓篈NSI(榛樿)鏂瑰紡錛孴CHAR絳変環浜嶤HAR錛?br>濡傛灉涓篣nicode鏂瑰紡錛孴CHAR絳変環浜嶹CHAR銆?br>鍦ㄥ綋 鍓嶇増鏈琇PCSTR鍜孡PSTR娌″尯鍒紝鍗充互闆剁粨灝劇殑瀛楃涓叉寚閽堬紝鐩稿綋浜嶤HAR *銆?br></font></p> <p style="COLOR: red"><br></p> <p>char :鍗曞瓧鑺傚彉閲忕被鍨嬶紝鏈澶氳〃紺?56涓瓧絎︼紝</p> <p>wchar_t :瀹藉瓧鑺傚彉閲忕被鍨嬶紝鐢ㄤ簬琛ㄧずUnicode瀛楃錛?/p> <p>瀹冨疄闄呭畾涔夊湪<string.h>閲岋細typedef unsigned short wchar_t銆?/p> <p>涓轟簡璁╃紪璇戝櫒璇嗗埆Unicode瀛楃涓詫紝蹇呴』浠ュ湪鍓嶉潰鍔犱竴涓?#8220;L”,瀹氫箟瀹藉瓧鑺傜被鍨嬫柟娉曞涓嬶細</p> <p>    wchar_t c = `A' ; <br>wchar_t * p = L"Hello!" ; <br>wchar_t a[] = L"Hello!" ; </p> <p>鍏朵腑錛屽瀛楄妭綾誨瀷姣忎釜鍙橀噺鍗犵敤2涓瓧鑺傦紝鏁呬笂榪版暟緇刟鐨剆izeof(a) = 14</p> <p>TCHAR / _T( ) : <br>濡傛灉鍦ㄧ▼搴忎腑鏃㈠寘鎷珹NSI鍙堝寘鎷琔nicode緙栫爜錛岄渶瑕佸寘鎷ご鏂囦歡tchar.h銆俆CHAR鏄畾涔夊湪璇ュご鏂囦歡涓殑瀹忥紝瀹冭浣犳槸鍚﹀畾涔変簡_UNICODE瀹忚屽畾涔夋垚錛?<br>瀹氫箟浜哶UNICODE錛?nbsp;   typedef wchar_t TCHAR ; <br>娌℃湁瀹氫箟_UNICODE錛?typedef char TCHAR ; </p> <p>#ifdef UNICODE <br>typedef char TCHAR; <br>#else <br>typede wchar_t TCHAR; <br>#endif <br>_T( )涔熸槸瀹氫箟鍦ㄨ澶存枃浠朵腑鐨勫畯錛岃鏄惁瀹氫箟浜哶UNICODE瀹忚屽畾涔夋垚錛?<br>瀹氫箟浜哶UNICODE錛?nbsp;   #define _T(x) L##x <br>娌℃湁瀹氫箟_UNICODE錛?#define _T(x) x <br>娉ㄦ剰錛氬鏋滃湪紼嬪簭涓嬌鐢ㄤ簡TCHAR錛岄偅涔堝氨涓嶅簲璇ヤ嬌鐢ˋNSI鐨剆trXXX鍑芥暟鎴栬匲nicode鐨剋csXXX鍑芥暟浜嗭紝鑰屽繀欏諱嬌鐢╰char.h涓畾涔夌殑_tcsXXX鍑芥暟銆?/p> <p>浠trcpy鍑芥暟涓轟緥瀛愶紝鎬葷粨涓涓嬶細<br> </p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">濡傛灉浣犳兂浣跨敤ANSI瀛楃涓詫紝閭d箞璇蜂嬌鐢ㄨ繖涓濂楀啓娉曪細 </span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> szString[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">strcpy(szString,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">濡傛灉浣犳兂浣跨敤Unicode瀛楃涓詫紝閭d箞璇蜂嬌鐢ㄨ繖涓濂楋細 </span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">wchar_t szString[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">wcscpy(szString,L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">濡傛灉浣犳兂閫氳繃瀹氫箟_UNICODE瀹忥紝鑰岀紪璇慉NSI鎴栬匲nicode瀛楃涓蹭唬鐮侊細 </span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">TCHAR szString[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">]; <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">_tcscpy(szString,_TEXT(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));</span></div> <p> </p> <p>CSDN:superarhow璇達細 涓嶈鍐嶄嬌鐢═CHAR鍜宊T浜嗭紒浠栧垎鏋愪簡鍘熷洜鍚庢葷粨錛氬 鏋滄偍姝e紑濮嬩竴涓柊鐨勯」鐩紝璇鋒棤璁哄浣曚篃瑕侀《浣忓帇鍔涳紝鐩存帴浣跨敤UNICODE緙栫爜錛佸垏璁幫紒鎮ㄥ彧闇瑕佸鎮ㄧ殑緇勫憳榪涜10鍒嗛挓鐨勫煿璁紝璁頒綇strcpy鐢?wcscpy錛宻printf鐢╯wprintf浠f浛錛屽父鏁板墠鍔燣錛屽氨鍙互浜嗭紒瀹冧笉浼氳姳鎮ㄥ緢澶氭椂闂寸殑錛屽甫緇欐偍鐨勬槸紼沖畾鍜屽畨鍏紒鐩鎬俊鍋訛紝娌¢敊鐨勶紒錛?/p> <p>涓銆?鍦ㄥ瓧絎︿覆鍓嶅姞涓涓狶浣滅敤: <br>   濡?nbsp; L"鎴戠殑瀛楃涓?    琛ㄧず灝咥NSI瀛楃涓茶漿鎹㈡垚unicode鐨勫瓧絎︿覆錛屽氨鏄瘡涓瓧絎﹀崰鐢ㄤ袱涓瓧鑺傘?<br>  strlen("asd")   =   3;   <br>  strlen(L"asd")   =   6; <br>  浜屻?nbsp; _T瀹忓彲浠ユ妸涓涓紩鍙峰紩璧鋒潵鐨勫瓧絎︿覆錛屾牴鎹綘鐨勭幆澧冭緗紝浣垮緱緙栬瘧鍣ㄤ細鏍規嵁緙栬瘧鐩爣鐜閫夋嫨鍚堥傜殑錛圲nicode榪樻槸ANSI錛夊瓧絎﹀鐞嗘柟寮?<br>   濡傛灉浣犲畾涔変簡UNICODE錛岄偅涔坃T瀹忎細鎶婂瓧絎︿覆鍓嶉潰鍔犱竴涓狶銆傝繖鏃?_T("ABCD") 鐩稿綋浜?L"ABCD" 錛岃繖鏄瀛楃涓層?<br>   濡傛灉娌℃湁瀹氫箟錛岄偅涔坃T瀹忎笉浼氬湪瀛楃涓插墠闈㈠姞閭d釜L錛宊T("ABCD") 灝辯瓑浠蜂簬 "ABCD" <br>涓夈乀EXT,_TEXT 鍜宊T 涓鏍風殑 <br>濡備笅闈笁璇彞錛?nbsp;  <br>  TCHAR   szStr1[]   =   TEXT("str1");   <br>  char   szStr2[]   =   "str2";   <br>  WCHAR   szStr3[]   =   L("str3");   <br>  閭d箞絎竴鍙ヨ瘽鍦ㄥ畾涔変簡UNICODE鏃朵細瑙i噴涓虹涓夊彞璇濓紝娌℃湁瀹氫箟鏃跺氨絳変簬絎簩鍙ヨ瘽銆?nbsp;  <br>  浣嗕簩鍙ヨ瘽鏃犺鏄惁瀹氫箟浜哢NICODE閮芥槸鐢熸垚涓涓狝NSI瀛楃涓詫紝鑰岀涓夊彞璇濇繪槸鐢熸垚UNICODE瀛楃涓層?nbsp;  <br>  涓轟簡紼嬪簭鐨勫彲縐繪鎬э紝寤鴻閮界敤絎竴縐嶈〃紺烘柟娉曘?nbsp;  <br>  浣嗗湪鏌愪簺鎯呭喌涓嬶紝鏌愪釜瀛楃蹇呴』涓篈NSI鎴朥NICODE錛岄偅灝辯敤鍚庝袱縐嶆柟娉曘?/p> <p style="COLOR: red">CSDN:superarhow璇達細 涓嶈鍐嶄嬌鐢═CHAR鍜宊T浜嗭紒浠栧垎鏋愪簡鍘熷洜鍚庢葷粨錛氬 鏋滄偍姝e紑濮嬩竴涓柊鐨勯」鐩紝璇鋒棤璁哄浣曚篃瑕侀《浣忓帇鍔涳紝鐩存帴浣跨敤UNICODE緙栫爜錛佸垏璁幫紒鎮ㄥ彧闇瑕佸鎮ㄧ殑緇勫憳榪涜10鍒嗛挓鐨勫煿璁紝璁頒綇strcpy鐢?wcscpy錛宻printf鐢╯wprintf浠f浛錛屽父鏁板墠鍔燣錛屽氨鍙互浜嗭紒瀹冧笉浼氳姳鎮ㄥ緢澶氭椂闂寸殑錛屽甫緇欐偍鐨勬槸紼沖畾鍜屽畨鍏紒鐩鎬俊鍋訛紝娌¢敊鐨勶紒錛?/p> <img src ="http://m.shnenglu.com/tdweng/aggbug/124436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tdweng/" target="_blank">蹇冪窘</a> 2010-08-23 16:46 <a href="http://m.shnenglu.com/tdweng/articles/124436.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>#ifndef#define#endif鐨勭敤娉?鏁寸悊) (杞彂)http://m.shnenglu.com/tdweng/articles/124387.html蹇冪窘蹇冪窘Mon, 23 Aug 2010 02:47:00 GMThttp://m.shnenglu.com/tdweng/articles/124387.htmlhttp://m.shnenglu.com/tdweng/comments/124387.htmlhttp://m.shnenglu.com/tdweng/articles/124387.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/124387.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/124387.html
[杞琞 #ifndef#define#endif鐨勭敤娉?鏁寸悊)    鍘?span class=addtime>浣滆咃細icwk 

鏂囦歡涓殑#ifndef

澶翠歡鐨勪腑鐨?ifndef錛岃繖鏄竴涓緢鍏抽敭鐨勪笢瑗褲傛瘮濡備綘鏈変袱涓狢鏂囦歡錛岃繖涓や釜C鏂囦歡閮絠nclude浜嗗悓涓涓ご鏂囦歡銆傝岀紪璇戞椂錛岃繖涓や釜C鏂囦歡瑕佷竴鍚岀紪璇戞垚涓涓彲榪愯鏂囦歡錛屼簬鏄棶棰樻潵浜嗭紝澶ч噺鐨勫0鏄庡啿紿併?

榪樻槸鎶婂ご鏂囦歡鐨勫唴瀹歸兘鏀懼湪#ifndef鍜?endif涓惂銆備笉綆′綘鐨勫ご鏂囦歡浼氫笉浼氳澶氫釜鏂囦歡寮曠敤錛屼綘閮借鍔犱笂榪欎釜銆備竴鑸牸寮忔槸榪欐牱鐨勶細

#ifndef <鏍囪瘑>
#define <鏍囪瘑>

......
......

#endif

<鏍囪瘑>鍦ㄧ悊璁轟笂鏉ヨ鍙互鏄嚜鐢卞懡鍚嶇殑錛屼絾姣忎釜澶存枃浠剁殑榪欎釜“鏍囪瘑”閮藉簲璇ユ槸鍞竴鐨勩傛爣璇嗙殑鍛藉悕瑙勫垯涓鑸槸澶存枃浠跺悕鍏ㄥぇ鍐欙紝鍓嶅悗鍔犱笅鍒掔嚎錛屽茍鎶婃枃浠跺悕涓殑“.”涔熷彉鎴愪笅鍒掔嚎錛屽錛歴tdio.h

#ifndef _STDIO_H_
#define _STDIO_H_

......

#endif

2.鍦?ifndef涓畾涔夊彉閲忓嚭鐜扮殑闂錛堜竴鑸笉瀹氫箟鍦?ifndef涓級銆?/p>

#ifndef AAA
#define AAA
...
int i;
...
#endif
閲岄潰鏈変竴涓彉閲忓畾涔?br>鍦╲c涓摼鎺ユ椂灝卞嚭鐜頒簡i閲嶅瀹氫箟鐨勯敊璇紝鑰屽湪c涓垚鍔熺紪璇戙?/p>

緇撹錛?/p>

(1).褰撲綘絎竴涓嬌鐢ㄨ繖涓ご鐨?cpp鏂囦歡鐢熸垚.obj鐨勬椂鍊欙紝int i 鍦ㄩ噷闈㈠畾涔変簡褰撳彟澶栦竴涓嬌鐢ㄨ繖涓殑.cpp鍐嶆[鍗曠嫭]鐢熸垚.obj鐨勬椂鍊欙紝int i 鍙堣瀹氫箟鐒跺悗涓や釜obj琚彟澶栦竴涓?cpp涔焛nclude 榪欎釜澶寸殑錛岃繛鎺ュ湪涓璧鳳紝灝變細鍑虹幇閲嶅瀹氫箟.

(2).鎶婃簮紼嬪簭鏂囦歡鎵╁睍鍚嶆敼鎴?c鍚庯紝VC鎸夌収C璇█鐨勮娉曞婧愮▼搴忚繘琛岀紪璇戯紝鑰屼笉鏄疌++銆傚湪C璇█涓紝鑻ユ槸閬囧埌澶氫釜int i錛屽垯鑷姩璁や負鍏朵腑涓涓槸瀹氫箟錛屽叾浠栫殑鏄0鏄庛?/p>

(3).C璇█鍜孋++璇█榪炴帴緇撴灉涓嶅悓錛屽彲鑳斤紙鐚滄祴錛夋椂鍦ㄨ繘琛岀紪璇戠殑鏃跺欙紝C++璇█灝嗗叏灞
鍙橀噺榛樿涓哄己絎﹀彿錛屾墍浠ヨ繛鎺ュ嚭閿欍侰璇█鍒欎緷鐓ф槸鍚﹀垵濮嬪寲榪涜寮哄急鐨勫垽鏂殑銆傦紙鍙傝冿級

瑙e喅鏂規硶錛?/p>

(1).鎶婃簮紼嬪簭鏂囦歡鎵╁睍鍚嶆敼鎴?c銆?/p>

(2).鎺ㄨ崘瑙e喅鏂規錛?br>.h涓彧澹版槑 extern int i;鍦?cpp涓畾涔?/p>

<x.h>
#ifndef __X_H__
#define __X_H__
extern int i;
#endif //__X_H__
<x.c>
int i;

娉ㄦ剰闂錛?/p>

(1).鍙橀噺涓鑸笉瑕佸畾涔夊湪.h鏂囦歡涓?/p>

 

-------------------------------------------------------------------------------------------------------------------------------------------

涓鑸儏鍐典笅錛屾簮紼嬪簭涓墍鏈夌殑琛岄兘鍙傚姞緙栬瘧銆備絾鏄湁鏃跺笇鏈涘鍏朵腑涓閮ㄥ垎鍐呭鍙湪婊¤凍涓瀹氭潯浠舵墠榪涜緙栬瘧錛屼篃灝辨槸瀵逛竴閮ㄥ垎鍐呭鎸囧畾緙栬瘧鐨勬潯浠訛紝榪欏氨鏄?#8220;鏉′歡緙栬瘧”銆傛湁鏃訛紝甯屾湜褰撴弧瓚蟲煇鏉′歡鏃跺涓緇勮鍙ヨ繘琛岀紪璇戯紝鑰屽綋鏉′歡涓嶆弧瓚蟲椂鍒欑紪璇戝彟涓緇勮鍙ャ?
鏉′歡緙栬瘧鍛戒護鏈甯歌鐨勫艦寮忎負錛?
    #ifdef 鏍囪瘑絎?
    紼嬪簭孌?
    #else
    紼嬪簭孌?
    #endif
    
    瀹冪殑浣滅敤鏄細褰撴爣璇嗙宸茬粡琚畾涔夎繃(涓鑸槸鐢?define鍛戒護瀹氫箟)錛屽垯瀵圭▼搴忔1榪涜緙栬瘧錛屽惁鍒欑紪璇戠▼搴忔2銆?
    鍏朵腑#else閮ㄥ垎涔熷彲浠ユ病鏈夛紝鍗籌細
    #ifdef
    紼嬪簭孌?
    #denif
    
    榪欓噷鐨?#8220;紼嬪簭孌?#8221;鍙互鏄鍙ョ粍錛屼篃鍙互鏄懡浠よ銆傝繖縐嶆潯浠剁紪璇戝彲浠ユ彁楂楥婧愮▼搴忕殑閫氱敤鎬с傚鏋滀竴涓狢婧愮▼搴忓湪涓嶅悓璁$畻鏈虹郴緇熶笂緋葷粺涓婅繍琛岋紝鑰屼笉鍚岀殑璁$畻鏈哄張鏈変竴瀹氱殑宸紓銆備緥濡傦紝鎴戜滑鏈変竴涓暟鎹被鍨嬶紝鍦╓indows騫沖彴涓紝搴旇浣跨敤long綾誨瀷琛ㄧず錛岃屽湪鍏朵粬騫沖彴搴旇浣跨敤float琛ㄧず錛岃繖鏍峰線寰闇瑕佸婧愮▼搴忎綔蹇呰鐨勪慨鏀癸紝榪欏氨闄嶄綆浜嗙▼搴忕殑閫氱敤鎬с傚彲浠ョ敤浠ヤ笅鐨勬潯浠剁紪璇戯細
    #ifdef WINDOWS
    #define MYTYPE long
    #else
    #define MYTYPE float
    #endif
    
    濡傛灉鍦╓indows涓婄紪璇戠▼搴忥紝鍒欏彲浠ュ湪紼嬪簭鐨勫紑濮嬪姞涓?
    #define WINDOWS
    
    榪欐牱鍒欑紪璇戜笅闈㈢殑鍛戒護琛岋細
    #define MYTYPE long
    
    濡傛灉鍦ㄨ繖緇勬潯浠剁紪璇戝懡浠や箣鍓嶆浘鍑虹幇浠ヤ笅鍛戒護琛岋細
    #define WINDOWS 0
    
    鍒欓緙栬瘧鍚庣▼搴忎腑鐨凪YTYPE閮界敤float浠f浛銆傝繖鏍鳳紝婧愮▼搴忓彲浠ヤ笉蹇呬綔浠諱綍淇敼灝卞彲浠ョ敤浜庝笉鍚岀被鍨嬬殑璁$畻鏈虹郴緇熴傚綋鐒朵互涓婁粙緇嶇殑鍙槸涓縐嶇畝鍗曠殑鎯呭喌錛屽彲浠ユ牴鎹鎬濊礬璁捐鍑哄叾瀹冪殑鏉′歡緙栬瘧銆?
    渚嬪錛屽湪璋冭瘯紼嬪簭鏃訛紝甯稿父甯屾湜杈撳嚭涓浜涙墍闇鐨勪俊鎭紝鑰屽湪璋冭瘯瀹屾垚鍚庝笉鍐嶈緭鍑鴻繖浜涗俊鎭傚彲浠ュ湪婧愮▼搴忎腑鎻掑叆浠ヤ笅鐨勬潯浠剁紪璇戞錛?
    #ifdef DEBUG
    print ("device_open(%p) ", file);
    #endif
    
    濡傛灉鍦ㄥ畠鐨勫墠闈㈡湁浠ヤ笅鍛戒護琛岋細
    #define DEBUG
    
    鍒欏湪紼嬪簭榪愯鏃惰緭鍑篺ile鎸囬拡鐨勫鹼紝浠ヤ究璋冭瘯鍒嗘瀽銆傝皟璇曞畬鎴愬悗鍙渶灝嗚繖涓猟efine鍛戒護琛屽垹闄ゅ嵆鍙傛湁浜哄彲鑳借寰椾笉鐢ㄦ潯浠剁紪璇戜篃鍙揪姝ょ洰鐨勶紝鍗沖湪璋冭瘯鏃跺姞涓鎵筽rintf璇彞錛岃皟璇曞悗涓涓灝唒rintf璇彞鍒犻櫎鍘匯傜殑紜紝榪欐槸鍙互鐨勩備絾鏄紝褰撹皟璇曟椂鍔犵殑printf璇彞姣旇緝澶氭椂錛屼慨鏀圭殑宸ヤ綔閲忔槸寰堝ぇ鐨勩傜敤鏉′歡緙栬瘧錛屽垯涓嶅繀涓涓鍒犳敼printf璇彞錛屽彧闇鍒犻櫎鍓嶉潰鐨勪竴鏉?#8220;#define DEBUG”鍛戒護鍗沖彲錛岃繖鏃舵墍鏈夌殑鐢―EBUG浣滄爣璇嗙鐨勬潯浠剁紪璇戞閮戒嬌鍏朵腑鐨刾rintf璇彞涓嶈搗浣滅敤錛屽嵆璧風粺涓鎺у埗鐨勪綔鐢紝濡傚悓涓涓?#8220;寮鍏?#8221;涓鏍楓?
    鏈夋椂涔熼噰鐢ㄤ笅闈㈢殑褰㈠紡錛?
    #ifndef 鏍囪瘑絎?
    紼嬪簭孌?
    #else
    紼嬪簭孌?
    #endif
    
    鍙槸絎竴琛屼笌絎竴縐嶅艦寮忎笉鍚岋細灝?#8220;ifdef”鏀逛負“ifndef”銆傚畠鐨勪綔鐢ㄦ槸錛氳嫢鏍囪瘑絎︽湭琚畾涔夊垯緙栬瘧紼嬪簭孌?錛屽惁鍒欑紪璇戠▼搴忔2銆傝繖縐嶅艦寮忎笌絎竴縐嶅艦寮忕殑浣滅敤鐩稿弽銆?
    浠ヤ笂涓ょ褰㈠紡鐢ㄦ硶宸笉澶氾紝鏍規嵁闇瑕佷換閫変竴縐嶏紝瑙嗘柟渚胯屽畾銆?
    榪樻湁涓縐嶅艦寮忥紝灝辨槸#if鍚庨潰鐨勬槸涓涓〃杈懼紡錛岃屼笉鏄竴涓畝鍗曠殑鏍囪瘑絎︼細
    #if 琛ㄨ揪寮?
    紼嬪簭孌?
    #else
    紼嬪簭孌?
    #endif
    
    瀹冪殑浣滅敤鏄細褰撴寚瀹氱殑琛ㄨ揪寮忓間負鐪燂紙闈為浂錛夋椂灝辯紪璇戠▼搴忔1錛屽惁鍒欑紪璇戠▼搴忔2銆傚彲浠ヤ簨鍏堢粰瀹氫竴瀹氭潯浠訛紝浣跨▼搴忓湪涓嶅悓鐨勬潯浠朵笅鎵ц涓嶅悓鐨勫姛鑳姐?/p>

---------------------------------------------------------------------------------------------------------------------------------------

浣滅敤鑼冨洿灝辨槸褰撳墠鏂囦歡鍟娿傚洜涓虹紪璇戞槸浠pp鎴朿鏂囦歡浣嶅崟浣嶇殑鍢涖傝繕浠ヨ繖涓負渚嬶細

//姝e父浠g爜
#ifdef _DEBUG
     TRACE("Some infomation");
#else
     //Now is release version,so do nothing
#endif
//姝e父浠g爜

緙栬瘧鏃舵槸鍏堟妸鎵鏈夌殑棰勭紪璇戝鐞嗗睍寮錛堟瘮濡傚畯錛夊啀緙栬瘧錛屾墍浠ebug妯″紡涓嬶紝緙栬瘧鏃剁殑浠g爜鏄細
//姝e父浠g爜
TRACE("Some infomation");
//姝e父浠g爜

Release妯″紡涓嬬殑浠g爜鏄細
//姝e父浠g爜
//姝e父浠g爜

涓轟簡閬垮厤鍚屼竴涓枃浠惰include澶氭

1   #ifndef鏂瑰紡
2   #pragma once鏂瑰紡

鍦ㄨ兘澶熸敮鎸佽繖涓ょ鏂瑰紡鐨勭紪璇戝櫒涓婏紝浜岃呭茍娌℃湁澶ぇ鐨勫尯鍒紝浣嗘槸涓よ呬粛鐒惰繕鏄湁涓浜涚粏寰殑鍖哄埆銆?br>    鏂瑰紡涓錛?/span>

    #ifndef __SOMEFILE_H__
    #define __SOMEFILE_H__
    ... ... // 涓浜涘0鏄庤鍙?br>    #endif

    鏂瑰紡浜岋細

    #pragma once
    ... ... // 涓浜涘0鏄庤鍙?/p>


    #ifndef鐨勬柟寮忎緷璧栦簬瀹忓悕瀛椾笉鑳藉啿紿侊紝榪欎笉鍏夊彲浠ヤ繚璇佸悓涓涓枃浠朵笉浼氳鍖呭惈澶氭錛屼篃鑳戒繚璇佸唴瀹瑰畬鍏ㄧ浉鍚岀殑涓や釜鏂囦歡涓嶄細琚笉灝忓績鍚屾椂鍖呭惈銆傚綋鐒訛紝緙虹偣灝辨槸濡傛灉涓嶅悓澶存枃浠剁殑瀹忓悕涓嶅皬蹇?#8220;鎾炶濺”錛屽彲鑳藉氨浼氬鑷村ご鏂囦歡鏄庢槑瀛樺湪錛岀紪璇戝櫒鍗寸‖璇存壘涓嶅埌澹版槑鐨勭姸鍐?br>
    #pragma once鍒欑敱緙栬瘧鍣ㄦ彁渚涗繚璇侊細鍚屼竴涓枃浠朵笉浼氳鍖呭惈澶氭銆傛敞鎰忚繖閲屾墍璇寸殑“鍚屼竴涓枃浠?#8221;鏄寚鐗╃悊涓婄殑涓涓枃浠訛紝鑰屼笉鏄寚鍐呭鐩稿悓鐨勪袱涓枃浠躲傚甫鏉ョ殑濂藉鏄紝浣犱笉蹇呭啀璐瑰姴鎯充釜瀹忓悕浜嗭紝褰撶劧涔熷氨涓嶄細鍑虹幇瀹忓悕紕版挒寮曞彂鐨勫鎬棶棰樸傚搴旂殑緙虹偣灝辨槸濡傛灉鏌愪釜澶存枃浠舵湁澶氫喚鎷瘋礉錛屾湰鏂規硶涓嶈兘淇濊瘉浠栦滑涓嶈閲嶅鍖呭惈銆傚綋鐒訛紝鐩告瘮瀹忓悕紕版挒寮曞彂鐨?#8220;鎵句笉鍒板0鏄?#8221;鐨勯棶棰橈紝閲嶅鍖呭惈鏇村鏄撹鍙戠幇騫朵慨姝c?br>
   鏂瑰紡涓鐢辮璦鏀寔鎵浠ョЩ妞嶆уソ錛屾柟寮忎簩 鍙互閬垮厤鍚嶅瓧鍐茬獊



蹇冪窘 2010-08-23 10:47 鍙戣〃璇勮
]]>
C++涓璫onst鐢ㄦ硶鎬葷粨(杞彂)http://m.shnenglu.com/tdweng/articles/124385.html蹇冪窘蹇冪窘Mon, 23 Aug 2010 02:42:00 GMThttp://m.shnenglu.com/tdweng/articles/124385.htmlhttp://m.shnenglu.com/tdweng/comments/124385.htmlhttp://m.shnenglu.com/tdweng/articles/124385.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/124385.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/124385.html浣滆匤uKevin

1. const淇グ鏅氬彉閲忓拰鎸囬拡

const淇グ鍙橀噺錛屼竴鑸湁涓ょ鍐欐硶錛?

const TYPE value;

TYPE const value;

榪欎袱縐嶅啓娉曞湪鏈川涓婃槸涓鏍風殑銆傚畠鐨勫惈涔夋槸錛歝onst淇グ鐨勭被鍨嬩負TYPE鐨勫彉閲弙alue鏄笉鍙彉鐨勩?

瀵逛簬涓涓潪鎸囬拡鐨勭被鍨婽YPE錛屾棤璁烘庝箞鍐欙紝閮芥槸涓涓惈涔夛紝鍗硋alue鍙笉鍙彉銆?

渚嬪錛?

const int nValue錛?        //nValue鏄痗onst

int const nValue錛?nbsp;   // nValue鏄痗onst

浣嗘槸瀵逛簬鎸囬拡綾誨瀷鐨凾YPE錛屼笉鍚岀殑鍐欐硶浼氭湁涓嶅悓鎯呭喌錛屼緥濡傦細

A. const char *pContent;

B. char * const pContent;

C. char const *pContent;

D. const char* const pContent;

 

瀵逛簬鍓嶄笁縐嶅啓娉曪紝鎴戜滑鍙互鎹釜鏂瑰紡錛岀粰鍏跺姞涓婃嫭鍙?

A. const (char) *pContent;

B. (char*) const pContent;

C. (char) const *pContent;

榪欐牱灝變竴鐩簡鐒躲傛牴鎹浜巆onst淇グ闈炴寚閽堝彉閲忕殑瑙勫垯錛屽緢鏄庢樉錛孉=C.

 

- 瀵逛簬A,C, const淇グ鐨勭被鍨嬩負char鐨勫彉閲?pContent涓哄父閲忥紝鍥犳錛宲Content鐨勫唴瀹逛負甯擱噺涓嶅彲鍙?

- 瀵逛簬B, const淇グ鐨勭被鍨嬩負char*鐨勫彉閲弍Content涓哄父閲忥紝鍥犳錛宲Content鎸囬拡鏈韓涓哄父閲忎笉鍙彉.

- 瀵逛簬D, 鍏跺疄鏄疉鍜孊鐨勬販鍚堜綋錛岃〃紺烘寚閽堟湰韜拰鎸囬拡鍐呭涓よ呯殕涓哄父閲忎笉鍙彉

 

鎬葷粨:

(1)  鎸囬拡鏈韓鏄父閲忎笉鍙彉

(char*) const pContent;

 

(2)  鎸囬拡鎵鎸囧悜鐨勫唴瀹規槸甯擱噺涓嶅彲鍙?

const (char) *pContent;

(char) const *pContent;

 

(3)  涓よ呴兘涓嶅彲鍙?

const char* const pContent;

 

榪樻湁鍏朵腑鍖哄埆鏂規硶錛?

娌跨潃*鍙峰垝涓鏉$嚎錛?

濡傛灉const浣嶄簬*鐨勫乏渚э紝鍒檆onst灝辨槸鐢ㄦ潵淇グ鎸囬拡鎵鎸囧悜鐨勫唴瀹瑰彉閲忥紝鍗蟲寚閽堟寚鍚戜負甯擱噺錛堢墿甯擱噺錛夛紱

濡傛灉const浣嶄簬*鐨勫彸渚э紝const灝辨槸淇グ鎸囬拡鏈韓錛屽嵆鎸囬拡鏈韓鏄父閲忥紙鎸囬拡甯擱噺錛夈?/span>

灝忎緥瀛愶細
char ch[5] = "lisi";
const char* pStr = ch;
*pStr = 'w';  //error錛岀墿甯擱噺錛屼笉鍙洿鏀瑰唴瀹?br>pStr ="wangwu"; //OK錛岀墿甯擱噺錛屽彲鏇存敼鎸囬拡

cha ch[5] = "lisi";
char * const pStr = "lisi";
pStr = "zhangsan"; //error錛屾寚閽堝父閲忥紝涓嶅彲鏇存敼鎸囬拡
*pStr = "w"; //OK 錛屾寚閽堝父閲忥紝鍙洿鏀瑰唴瀹?

2. const淇グ鍑芥暟鍙傛暟

const淇グ鍑芥暟鍙傛暟鏄畠鏈騫挎硾鐨勪竴縐嶇敤閫旓紝瀹冭〃紺哄嚱鏁頒綋涓笉鑳戒慨鏀瑰弬鏁扮殑鍊?鍖呮嫭鍙傛暟鏈韓鐨勫兼垨鑰呭弬鏁板叾涓寘鍚殑鍊?銆傚畠鍙互寰堝ソ

void function(const int Var); //浼犻掕繃鏉ョ殑鍙傛暟鍦ㄥ嚱鏁板唴涓嶅彲浠ユ敼鍙?鏃犳剰涔夛紝鍥犱負Var鏈韓灝辨槸褰㈠弬)

void function(const char* Var); //鍙傛暟鎸囬拡鎵鎸囧唴瀹逛負甯擱噺涓嶅彲鍙?

void function(char* const Var); //鍙傛暟鎸囬拡鏈韓涓哄父閲忎笉鍙彉(涔熸棤鎰忎箟錛?鍥犱負char* Var涔熸槸褰㈠弬)

 

鍙傛暟涓哄紩鐢紝涓轟簡澧炲姞鏁堢巼鍚屾椂闃叉淇敼銆?

淇グ寮曠敤鍙傛暟鏃訛細

void function(const Class& Var);//寮曠敤鍙傛暟鍦ㄥ嚱鏁板唴涓嶅彲浠ユ敼鍙?

void function(const TYPE& Var); //寮曠敤鍙傛暟鍦ㄥ嚱鏁板唴涓哄父閲忎笉鍙彉

 

3. const 淇グ鍑芥暟榪斿洖鍊?/p>

const淇グ鍑芥暟榪斿洖鍊煎叾瀹炵敤鐨勫茍涓嶆槸寰堝錛屽畠鐨勫惈涔夊拰const淇グ鏅氬彉閲忎互鍙婃寚閽堢殑鍚箟鍩烘湰鐩稿悓銆?

(1) const int fun1() 榪欎釜鍏跺疄鏃犳剰涔夛紝鍥犱負鍙傛暟榪斿洖鏈韓灝辨槸璧嬪箋?

(2) const int * fun2()

璋冪敤鏃?const int *pValue = fun2();

鎴戜滑鍙互鎶奻un2()鐪嬩綔鎴愪竴涓彉閲忥紝閭d箞灝辨槸鎴戜滑涓婇潰鎵璇寸殑1.(1)鐨勫啓娉曪紝鍗蟲寚閽堝唴瀹逛笉鍙彉銆?

(3) int* const fun3()

璋冪敤鏃?int * const pValue = fun2();

鎴戜滑鍙互鎶奻un2()鐪嬩綔鎴愪竴涓彉閲忥紝閭d箞灝辨槸鎴戜滑涓婇潰鎵璇寸殑1.(2)鐨勫啓娉曪紝鍗蟲寚閽堟湰韜笉鍙彉銆?

4. const淇グ綾誨璞?瀵硅薄鎸囬拡/瀵硅薄寮曠敤

const淇グ綾誨璞¤〃紺鴻瀵硅薄涓哄父閲忓璞★紝鍏朵腑鐨勪換浣曟垚鍛橀兘涓嶈兘琚慨鏀廣傚浜庡璞℃寚閽堝拰瀵硅薄寮曠敤涔熸槸涓鏍楓?

const淇グ鐨勫璞★紝璇ュ璞$殑浠諱綍闈瀋onst鎴愬憳鍑芥暟閮戒笉鑳借璋冪敤錛屽洜涓轟換浣曢潪const鎴愬憳鍑芥暟浼氭湁淇敼鎴愬憳鍙橀噺鐨勪紒鍥俱?

渚嬪錛?

class AAA

{
   void func1();

void func2() const;

}

const AAA aObj;

aObj.func1(); ×

aObj.func2(); 姝g‘

 

const AAA* aObj = new AAA();

aObj->func1(); ×

aObj->func2(); 姝g‘

 

5. const淇グ鎴愬憳鍙橀噺

const淇グ綾葷殑鎴愬憳鍑芥暟錛岃〃紺烘垚鍛樺父閲忥紝涓嶈兘琚慨鏀癸紝鍚屾椂瀹冨彧鑳藉湪鍒濆鍖栧垪琛ㄤ腑璧嬪箋?

 

class A

{

   …

   const int nValue;       //鎴愬憳甯擱噺涓嶈兘琚慨鏀?

   …

   A(int x): nValue(x) {}; //鍙兘鍦ㄥ垵濮嬪寲鍒楄〃涓祴鍊?

}

 

6. const淇グ鎴愬憳鍑芥暟

const淇グ綾葷殑鎴愬憳鍑芥暟錛屽垯璇ユ垚鍛樺嚱鏁頒笉鑳戒慨鏀圭被涓換浣曢潪const鎴愬憳鍑芥暟銆備竴鑸啓鍦ㄥ嚱鏁扮殑鏈鍚庢潵淇グ銆?

 

class A

{

   …

void function()const; //甯告垚鍛樺嚱鏁? 瀹冧笉鏀瑰彉瀵硅薄鐨勬垚鍛樺彉閲? 涔熶笉鑳借皟鐢ㄧ被涓換浣曢潪const鎴愬憳鍑芥暟銆?

}

瀵逛簬const綾誨璞?鎸囬拡/寮曠敤錛屽彧鑳借皟鐢ㄧ被鐨刢onst鎴愬憳鍑芥暟錛屽洜姝わ紝const淇グ鎴愬憳鍑芥暟鐨勬渶閲嶈浣滅敤灝辨槸闄愬埗瀵逛簬const瀵硅薄鐨勪嬌鐢ㄣ?

 

7. const甯擱噺涓巇efine瀹忓畾涔夌殑鍖哄埆

(1) 緙栬瘧鍣ㄥ鐞嗘柟寮忎笉鍚?

define瀹忔槸鍦ㄩ澶勭悊闃舵灞曞紑銆?

const甯擱噺鏄紪璇戣繍琛岄樁孌典嬌鐢ㄣ?

(2) 綾誨瀷鍜屽畨鍏ㄦ鏌ヤ笉鍚?

define瀹忔病鏈夌被鍨嬶紝涓嶅仛浠諱綍綾誨瀷媯鏌ワ紝浠呬粎鏄睍寮銆?

const甯擱噺鏈夊叿浣撶殑綾誨瀷錛屽湪緙栬瘧闃舵浼氭墽琛岀被鍨嬫鏌ャ?

(3) 瀛樺偍鏂瑰紡涓嶅悓

define瀹忎粎浠呮槸灞曞紑錛屾湁澶氬皯鍦版柟浣跨敤錛屽氨灞曞紑澶氬皯嬈★紝涓嶄細鍒嗛厤鍐呭瓨銆?

const甯擱噺浼氬湪鍐呭瓨涓垎閰?鍙互鏄爢涓篃鍙互鏄爤涓?銆?/p>

蹇冪窘 2010-08-23 10:42 鍙戣〃璇勮
]]>
C++ extern灝忎緥瀛?/title><link>http://m.shnenglu.com/tdweng/articles/124375.html</link><dc:creator>蹇冪窘</dc:creator><author>蹇冪窘</author><pubDate>Mon, 23 Aug 2010 02:17:00 GMT</pubDate><guid>http://m.shnenglu.com/tdweng/articles/124375.html</guid><wfw:comment>http://m.shnenglu.com/tdweng/comments/124375.html</wfw:comment><comments>http://m.shnenglu.com/tdweng/articles/124375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tdweng/comments/commentRss/124375.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tdweng/services/trackbacks/124375.html</trackback:ping><description><![CDATA[<span style="COLOR: red">鐢ㄤ緥瀛愮粰浣犵ず鑼?<br>// 1.cpp <br>int x = 10; <br>// 2.cpp 娉ㄦ剰娌℃湁鍖呭惈1.cpp <br>#include <iostream> <br>using namespace std; <br>extern int x;<br>int main () <br>{ cout << x << endl; } <br>//鍒欒緭鍑?0 <br>涓や釜鏂囦歡鍚屽湪涓涓」鐩紙project錛変腑錛屼綘涓嶅寘鍚煇涓枃浠訛紙cpp錛夎屽彲浠ョ敤瀹冨唴閮ㄥ畾涔夌殑鍙橀噺錛?榪欓噷鏄?cpp涓嶆槸.h, 鍥犱負鍦?h涓畾涔夌殑鏁版嵁涓嶈兘鍦?cpp涓敤闄ら潪榪欎釜.cpp鍖呭惈榪欎釜.h鏂囦歡錛?/span> <br>渚嬶細 <br>// 1.h <br>#include <iostream> <br>void print() <br>{ <br>std::cout << "hello!" << std::endl; <br>} <br>// 2.cpp <br>#include <iostream> <br>using namespace std; <br>// 浠ヤ笂涓ゅ彞鍦ㄨ繖涓緥瀛愪腑鍙互涓嶈 <br>extern void print(); <br>int main () <br>{ <br>print(); <br>} <br>灝變細鍑洪敊鍥犱負1.h涓殑void print()錛涘湪涓嶅寘鍚畠鐨勬枃浠朵腑鏄笉鍙皟鐢ㄧ殑錛屽嵆浣垮湪澹版槑浜唀xtern 涔熶簬浜嬫棤琛ワ紝濡傛灉浣犲皢榪欎釜渚嬪瓙涓殑1.h鍚嶅瓧鎹㈡垚1.cpp灝卞浜嗭紒 <br><span style="COLOR: red">浠庤繖浜涘彲浠ョ湅鍑烘潵錛宔xtern鍦ㄨ繖閲岃搗鐨勪綔鐢ㄦ槸鍛婅瘔緙栬瘧鍣紝浣犺繖涓猵rint()宸茬粡鍦ㄦ煇涓?cpp涓凡緇忓畾涔変簡錛岃繖閲屽彧涓嶈繃鏄0鏄庝竴涓嬫湁榪欎釜涓滆タ錛岀劧鍚庢嬁鏉ョ敤涓涓嬨傚畾涔夊彧鑳藉嚭鐜頒竴嬈★紝澹版槑鍗村彲鍑虹幇澶氭錛屼篃灝辨槸璇磂xtern澹版槑鍙湪澶氫釜鏂囦歡涓敤錛堝寘鎷?h) <br>榪樻湁錛屼綘榪樺彲浠ュ睆钄絜xtern澹版槑錛屽絎簩涓緥瀛愪腑鐨勭浜屼釜.cpp鏂囦歡鍙互鏀規垚 <br></span>#include <iostream> <br>using namespace std; <br>// 榪欓噷浠ヤ笂涓ゅ彞涓嶈兘鐪佺暐錛屽洜涓猴紝榪欓噷extern void print();鍑芥暟宸茬粡涓嶈搗浣滅敤浜嗭紝鍦ㄨ繖閲岃皟鐢ㄧ殑鑰屾槸鏈枃浠朵腑瀹氫箟鐨剉oid print()鍑芥暟錛屽叾涓敤鍒頒簡cout,endl;浠栦滑鏉ユ簮浜巗td::<iostream> <br>extern void print(); <br>void print() <br>{ <br>cout << "world!" << endl; <br>} <br><br>int main () <br>{ <br>print(); <br>} <br>// 杈撳嚭緇撴灉涓簑orld! <br>榪樻湁涓涓猠xtern "C"灝變笉鐢ㄨ浜嗭紝鐢ㄨ繖涓彲浠ュ厑璁窩++紼嬪簭涓皟鐢–鐨勫嚱鏁幫紒 <img src ="http://m.shnenglu.com/tdweng/aggbug/124375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tdweng/" target="_blank">蹇冪窘</a> 2010-08-23 10:17 <a href="http://m.shnenglu.com/tdweng/articles/124375.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C/C++/VC闅忔満鏁版葷粨http://m.shnenglu.com/tdweng/articles/114159.html蹇冪窘蹇冪窘Sun, 02 May 2010 03:10:00 GMThttp://m.shnenglu.com/tdweng/articles/114159.htmlhttp://m.shnenglu.com/tdweng/comments/114159.htmlhttp://m.shnenglu.com/tdweng/articles/114159.html#Feedback1http://m.shnenglu.com/tdweng/comments/commentRss/114159.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/114159.html 

澶у閮界煡閬揅璇█涓殑闅忔満鍑芥暟random錛屽彲鏄痳andom鍑芥暟騫朵笉鏄疉NSI C鏍囧噯錛屾墍浠ヨ錛宺andom鍑芥暟涓嶈兘鍦╣cc,vc絳夌紪璇戝櫒涓嬬紪
璇戦氳繃銆傞偅涔堟庝箞瀹炵幇VC璇█涓殑闅忔満鍑芥暟鍛紵

鍏跺疄錛岄櫎浜唕andom鍑芥暟錛岃繕鏈変竴涓猺and鍑芥暟錛岃繖涓嚱鏁頒篃鏄竴涓殢鏈哄嚱鏁幫紝浠栧彲浠ヤ駭鐢熶粠0鍒皉and_max(32767)鐨勯殢鏈烘暟銆?/p>

 

#include<stdio.h>
#include
<stdlib.h>

int main()

   
int k; 
   k 
= rand();
   printf(
"%d\\n", k);
   
return 0;
}
//main

澶у鍙互鎶婁互涓婄殑浠g爜緙栬瘧榪愯涓涓嬶紝鍙戠幇浠栫殑紜駭鐢熼殢鏈烘暟浜嗭紝浣嗘槸浣犱細鍙戠幇錛屾瘡嬈¤繍琛岀▼搴忎駭鐢熺殑闅忔満鏁伴兘鏄竴鏍風殑錛屼笉榪囦綘鍦ㄧ▼搴忛噷鍔犱笂for寰幆錛屾瘡嬈′駭鐢熺殑鏁頒笉涓鏍鳳紝浣嗘槸錛屽鏋滃啀榪愯榪欎釜紼嬪簭錛屽畠浜х敓鐨勬暟鎹嵈閮芥槸鐩稿悓鐨勩?/p>

閭d箞濡備綍鍐欎竴涓▼搴忥紝璁╁畠姣忔榪愯鏃朵駭鐢熺殑闅忔満鏁伴兘涓嶄竴鏍峰憿錛?璇風湅涓嬮潰鐨勪緥瀛愶細

#include <stdlib.h>
#include 
<stdio.h>
#include 
<time.h>
#include
<iostream>
using namespace std;
int main(void)
{
   
int i;
   time_t t;
   srand((unsigned) time(
&t));
  cout
<<"Ten random numbers from 0 to 99\n\n";
   
for(i=0; i<10; i++)
       printf(
"%d\n", rand() % 100);
   
return 0;
}

榪欐椂榪愯紼嬪簭錛屼細鍙戠幇姣忔浜х敓鐨勯殢鏈烘暟閮戒笉涓鏍楓?/p>

閭d箞涓轟粈涔堢涓涓▼搴忎竴鏍瘋岀浜屼釜紼嬪簭涓鏍峰憿錛?/p>

絎簩涓▼搴忕敤鍒頒簡涓涓柊鐨勫嚱鏁皊rand

榪欎釜鍑芥暟鏄粰闅忔満鏁頒駭鐢熶竴涓殢鏈虹瀛?seed)錛屽嚱鏁板師鍨嬫槸srand( (unsigned)time( NULL ) );


time鐨勫兼瘡鏃舵瘡鍒婚兘涓嶅悓銆傛墍浠ョ瀛愪笉鍚岋紝鎵浠ワ紝浜х敓鐨勯殢鏈烘暟涔熶笉鍚屻?/p>

鎵浠ヨ錛岃鎯充駭鐢熶笉鍚岀殑闅忔満鏁幫紝鍦ㄤ嬌鐢╮and涔嬪墠闇瑕佸厛璋冪敤srand

srand鍜宺and鍑芥暟閮藉寘鍚湪stdlib.h鐨勫ご鏂囦歡閲屻?/p>

鐢變簬rand浜х敓鐨勯殢鏈烘暟鏄粠0鍒皉and_max鐨勶紝鑰宺and_max錛?2767錛夋槸涓涓緢澶х殑鏁幫紝閭d箞濡備綍浜х敓浠嶺~Y鐨勬暟鍛紵

浠嶺鍒癥錛屾湁Y錛峏錛?涓暟錛屾墍浠ヨ浜х敓浠嶺鍒癥鐨勬暟錛屽彧闇瑕佽繖鏍峰啓錛?/p>

k = rand() % (Y - X + 1) +X;

榪欐牱錛屽氨鍙互浜х敓浣犳兂瑕佺殑浠諱綍鑼冨洿鍐呯殑闅忔満鏁頒簡銆?
闂錛氬浣曠敓鎴怟涓皬浜庯籍騫朵笖浜掍笉閲嶅鐨勬暣鏁?/span>

涓.棣栧厛瀵逛簬c++鐨勯殢鏈哄嚱鏁版垜浠鏈夋墍浜嗚В錛岃繖閲屽氨涓嶇瘡璧樹簡錛岃璇昏呰嚜琛実oogle涔嬶紝
鎴戜滑瑕佺敤鍒扮殑鏈?br>1. void srand(unsigned int_seed)鍑芥暟浜х敓涓涓互褰撳墠鏃墮棿寮濮嬬殑闅忔満縐嶅瓙
  srand(unsigned(time(NULL))),蹇呴』鏀懼湪鐢熸垚闅忔満鏁板墠
2.int rand()鍑芥暟錛岄殢鏈轟駭鐢熶竴鏁存暟
   rand()%MAX 浜х敓[0,MAX)鐨勬暣鏁?br>   a+rand()%(b-a+1) 浜х敓[a,b]涔嬮棿鐨勬暣鏁?br>3.闇瑕佸ご鏂囦歡#include<time.h>

#include<iostream>
using namespace std;
#include
<time.h>
#define N 100
#define K 20

int x[N];
void swap(int i,int j)
{
  
int temp=x[i];
  x[i]
=x[j];
  x[j]
=temp;
}

int main()
{
    
int i;
    
for(i=0;i<N;i++)
        x[i]
=i;
    srand(unsigned(time(NULL)));
    
for(i=0;i<K;i++){
        swap(i,i
+rand()%(N-i));
        cout
<<x[i]<<" ";
    }

    
    
return 0;
}


浜?鑰冭檻濡備綍璁╂暟鎹笉閲嶅 
  鐪嬩唬鐮佸惂銆傘傚涔犱笅鏂規硶
棣栧厛鎼炰釜涓緇濇病鏈夐噸澶嶆暟鎹殑鏁扮粍錛屽氨鏄痻[i]=i;
姝ゆ椂娉ㄦ剰閭d釜swap鍑芥暟錛屾瘡嬈$敓鎴愮殑闅忔満鏁頒綔涓烘暟緇勪笅鏍囧幓鍙栨暟錛岀劧鍚庝氦鎹紝榪欏氨淇濊瘉浜唜榪欎釜鏁扮粍緇濅笉浼氭湁閲嶅鐨勬暟鍑虹幇銆?br>緇濅簡錛侊紒



蹇冪窘 2010-05-02 11:10 鍙戣〃璇勮
]]>
C璇█鍏ㄦ誨瓧絎︿覆鍑芥暟 http://m.shnenglu.com/tdweng/articles/113484.html蹇冪窘蹇冪窘Sat, 24 Apr 2010 18:07:00 GMThttp://m.shnenglu.com/tdweng/articles/113484.htmlhttp://m.shnenglu.com/tdweng/comments/113484.htmlhttp://m.shnenglu.com/tdweng/articles/113484.html#Feedback0http://m.shnenglu.com/tdweng/comments/commentRss/113484.htmlhttp://m.shnenglu.com/tdweng/services/trackbacks/113484.html
鐪嬪埌榪欐牱涓涓敼閿欓錛?br>
char p[5]; 
char* s="12345"
strcpy(p,s);
   cout << p << endl;
閿欒涔嬪鏄緢鏄劇劧鐨勶紝浣滀負瀛楃涓插瓧闈㈠肩殑"12345"浼氬湪緇撳熬澶勮嚜鍔ㄥ姞涓婄┖瀛楃null錛屼粠鑰岄暱搴︽槸6錛屼笂闈㈢殑strcpy鏄細瓚婄晫鐨勶紝浠庤屾槸涓秺鐣岄敊璇?br>闂鏄垜浠ヤ負榪欐牱鐨勭▼搴忕紪璇戠殑鏃跺欎細鍑洪敊鍛?浣嗘槸鎴戝湪vc涓婅繍琛屾椂鏄彲浠ヨ緭鍑烘紜粨鏋滅殑錛岃繖璁╂垜寰堟槸綰抽椃錛佸悗鏉ユ壘鍒頒簡strcpy鐨勬簮浠g爜鎵嶇煡鍘熷洜錛宻trcpy鍑芥暟鏄笉榪涜瓚婄晫澶勭悊鐨? 鍙堝洜涓簊trcpy榪瀗ull涓璧峰鍒訛紝浠庤宲鑳借緭鍑烘紜殑緇撴灉"12345"
/*The strcpy function copies strSource, including the terminating null character, to the location specified by strDestination. No overflow checking is performed when strings are copied or appended. The behavior of strcpy is undefined if the source and destination strings overlap.*/
char * __cdecl strcpy(char * dst, const char * src) 

char * cp = dst; 

while*cp++ = *src++ ) 
/* Copy src over dst */ 

return( dst ); 
}
 
璨屼技strcpy铏界劧涓嶈繘琛岃秺鐣屽鐞嗭紝浠嶇劧鏄釜鎸哄ソ鐨勫嚱鏁板憿錛屼絾鏄敞鎰忎簡錛屼笅闈㈢殑浠g爜灝辮兘鏆撮湶鍑簊trcpy 鐨勭己鐐逛簡.
char p[5];
char *= "12345678";
strcpy(p,s);
cout 
<< p <<endl; //杈撳嚭12345678錛岃屼笉鏄垜浠墍璁炬兂鐨?2345
涓轟簡涓嶅洜涓嶇煡s鐨勯暱搴﹁岀姱涓嬮敊璇紝鎺ㄨ崘浣跨敤strncpy銆備絾鏄槸涓嶆槸鐢ㄤ簡strncpy灝變竾鏃犱竴澶變簡鍛紵鐪嬩笅闈㈢殑浠g爜錛?br>
char p[5];
char* s = "12345";
strncpy(p,s,
5);
cout 
<< p <<endl; //12345*&^(鍚庨潰琛ㄧず涔辯爜)
涓嶆槸閮介檺鍒朵釜鏁頒簡涔堬紵涓轟粈涔堝悗闈㈠張鏈変貢鐮侊紵
闂鏉ヨ嚜鍦ㄤ笂榪版儏褰trncpy鏄笉浼氬鍒跺瓧絎︿覆s鍚庨潰鐨刵ull鐨勶紝涓嶆槸浠ull緇撴潫鐨刾涓嶄細杈撳嚭姝g‘緇撴灉鐨勩?br>浠嶇劧緇欏嚭strncpy鐨勬簮浠g爜錛?br>
/*The strncpy function copies the initial count characters of strSource to strDest and returns strDest. If count is less than or equal to the length of strSource, a null character is not appended automatically to the copied string. If count is greater than the length of strSource, the destination string is padded with null characters up to length count. The behavior of strncpy is undefined if the source and destination strings overlap.*/
char * __cdecl strncpy ( char * dest, const char * source, size_t count ) 

char *start = dest; 

while (count && (*dest++ = *source++)) /* copy string */ 
count
--

if (count) /* pad out with zeroes */ 
while (--count) 
*dest++ = '\0'

return(start); 
}
 
閭trncpy榪欎箞涓嶇ǔ瀹氾紝涓轟綍鐢ㄥ畠錛焥trncpy緇忓父鐢ㄤ簬淇敼涓涓暱瀛楃涓蹭腑闂寸殑涓閮ㄥ垎錛堢湅鍑轟笉澶嶅埗null鐨勫師鍥犱簡鍚э紒錛夛紝濡傛灉瀹炲湪瑕佺敤鍒頒笂榪扮殑浠g爜涓婏紝灝卞湪浠g爜鏈鍚庡姞涓妏[5] = '\0'; 鍚э紒

鍑芥暟鍚? stpcpy
鍔?nbsp; 鑳? 鎷瘋礉涓涓瓧絎︿覆鍒板彟涓涓?
鐢?nbsp; 娉? char *stpcpy(char *destin, char *source);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char string[10];
   char *str1 = "abcdefghi";
   stpcpy(string, str1);
   printf("%sn", string);
   return 0;
}
 
 
 
鍑芥暟鍚? strcat
鍔?nbsp; 鑳? 瀛楃涓叉嫾鎺ュ嚱鏁?
鐢?nbsp; 娉? char *strcat(char *destin, char *source);
紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char destination[25];
   char *blank = " ", *c = "C++", *Borland = "Borland";
   strcpy(destination, Borland);
   strcat(destination, blank);
   strcat(destination, c);
   printf("%sn", destination);
   return 0;
}
 
 
 
鍑芥暟鍚? strchr
鍔?nbsp; 鑳? 鍦ㄤ竴涓覆涓煡鎵劇粰瀹氬瓧絎︾殑絎竴涓尮閰嶄箣澶?
鐢?nbsp; 娉? char *strchr(char *str, char c);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
    char string[15];
    char *ptr, c = 'r';
    strcpy(string, "This is a string");
    ptr = strchr(string, c);
    if (ptr)
       printf("The character %c is at position: %d\n", c, ptr-string);// 涓嶆槑鐧?nbsp;
    else
       printf("The character was not foundn");
    return 0;
}
 
 
 
鍑芥暟鍚? strcmp
鍔?nbsp; 鑳? 涓叉瘮杈?
鐢?nbsp; 娉? int strcmp(char *str1, char *str2);
鐪婣sic鐮侊紝str1>str2錛岃繑鍥炲?> 0錛涗袱涓茬浉絳夛紝榪斿洖0

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
    char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
    int ptr;
    ptr = strcmp(buf2, buf1);
    if (ptr > 0)
       printf("buffer 2 is greater than buffer 1n");
    else
       printf("buffer 2 is less than buffer 1n");
    ptr = strcmp(buf2, buf3);
    if (ptr > 0)
       printf("buffer 2 is greater than buffer 3n");
    else
       printf("buffer 2 is less than buffer 3n");
    return 0;
}
 
 
 
鍑芥暟鍚? strncmpi
鍔?nbsp; 鑳? 灝嗕竴涓覆涓殑涓閮ㄥ垎涓庡彟涓涓覆姣旇緝, 涓嶇澶у皬鍐?
鐢?nbsp; 娉? int strncmpi(char *str1, char *str2, unsigned maxlen);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *buf1 = "BBB", *buf2 = "bbb";
   int ptr;
   ptr = strcmpi(buf2, buf1);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   if (ptr < 0)
      printf("buffer 2 is less than buffer 1n");
   if (ptr == 0)
      printf("buffer 2 equals buffer 1n");
   return 0;
}
 
 
 
鍑芥暟鍚? strcpy
鍔?nbsp; 鑳? 涓叉嫹璐?
鐢?nbsp; 娉? char *strcpy(char *str1, char *str2);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
    char string[10];
    char *str1 = "abcdefghi";
    strcpy(string, str1);
    printf("%sn", string);
    return 0;
}
 
 
 
鍑芥暟鍚? strcspn
鍔?nbsp; 鑳? 鍦ㄤ覆涓煡鎵劇涓涓粰瀹氬瓧絎﹂泦鍐呭鐨勬
鐢?nbsp; 娉? int strcspn(char *str1, char *str2);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
    char *string1 = "1234567890";
    char *string2 = "747DC8";
    int length;
    length = strcspn(string1, string2);
    printf("Character where strings intersect is at position %dn", length);
    return 0;
}
 
 
 
鍑芥暟鍚? strdup
鍔?nbsp; 鑳? 灝嗕覆鎷瘋礉鍒版柊寤虹殑浣嶇疆澶?
鐢?nbsp; 娉? char *strdup(char *str);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
    char *dup_str, *string = "abcde";
    dup_str = strdup(string);
    printf("%sn", dup_str);
    free(dup_str);
    return 0;
}
 
 
 
鍑芥暟鍚? stricmp
鍔?nbsp; 鑳? 浠ュぇ灝忓啓涓嶆晱鎰熸柟寮忔瘮杈冧袱涓覆
鐢?nbsp; 娉? int stricmp(char *str1, char *str2);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *buf1 = "BBB", *buf2 = "bbb";
   int ptr;
   ptr = stricmp(buf2, buf1);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   if (ptr < 0)
      printf("buffer 2 is less than buffer 1n");
   if (ptr == 0)
      printf("buffer 2 equals buffer 1n");
   return 0;
}
 
 
鍑芥暟鍚? strerror
鍔?nbsp; 鑳? 榪斿洖鎸囧悜閿欒淇℃伅瀛楃涓茬殑鎸囬拡
鐢?nbsp; 娉? char *strerror(int errnum);

紼嬪簭渚?
#include <stdio.h>
#include <errno.h>
int main(void)
{
   char *buffer;
   buffer = strerror(errno);
   printf("Error: %sn", buffer);
   return 0;
}
 
 
 
鍑芥暟鍚? strcmpi
鍔?nbsp; 鑳? 灝嗕竴涓覆涓庡彟涓涓瘮杈? 涓嶇澶у皬鍐?
鐢?nbsp; 娉? int strcmpi(char *str1, char *str2);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *buf1 = "BBB", *buf2 = "bbb";
   int ptr;
   ptr = strcmpi(buf2, buf1);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   if (ptr < 0)
      printf("buffer 2 is less than buffer 1n");
   if (ptr == 0)
      printf("buffer 2 equals buffer 1n");
   return 0;
}
 
 
 
鍑芥暟鍚? strncmp
鍔?nbsp; 鑳? 涓叉瘮杈?
鐢?nbsp; 娉? int strncmp(char *str1, char *str2, int maxlen);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int  main(void)
{
   char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";
   int ptr;
   ptr = strncmp(buf2,buf1,3);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   else
      printf("buffer 2 is less than buffer 1n");
   ptr = strncmp(buf2,buf3,3);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 3n");
   else
      printf("buffer 2 is less than buffer 3n");
   return(0);
}
 
 
鍑芥暟鍚? strncmpi
鍔?nbsp; 鑳? 鎶婁覆涓殑涓閮ㄥ垎涓庡彟涓涓蹭腑鐨勪竴閮ㄥ垎姣旇緝, 涓嶇澶у皬鍐?
鐢?nbsp; 娉? int strncmpi(char *str1, char *str2);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *buf1 = "BBBccc", *buf2 = "bbbccc";
   int ptr;
   ptr = strncmpi(buf2,buf1,3);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   if (ptr < 0)
      printf("buffer 2 is less than buffer 1n");
   if (ptr == 0)
      printf("buffer 2 equals buffer 1n");
   return 0;
}
 
 
鍑芥暟鍚? strncpy
鍔?nbsp; 鑳? 涓叉嫹璐?
鐢?nbsp; 娉? char *strncpy(char *destin, char *source, int maxlen);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char string[10];
   char *str1 = "abcdefghi";
   strncpy(string, str1, 3);
   string[3] = '';
   printf("%sn", string);
   return 0;
}
 
 
鍑芥暟鍚? strnicmp
鍔?nbsp; 鑳? 涓嶆敞閲嶅ぇ灝忓啓鍦版瘮杈冧袱涓覆
鐢?nbsp; 娉? int strnicmp(char *str1, char *str2, unsigned maxlen);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *buf1 = "BBBccc", *buf2 = "bbbccc";
   int ptr;
   ptr = strnicmp(buf2, buf1, 3);
   if (ptr > 0)
      printf("buffer 2 is greater than buffer 1n");
   if (ptr < 0)
      printf("buffer 2 is less than buffer 1n");
   if (ptr == 0)
      printf("buffer 2 equals buffer 1n");
   return 0;
}
 
 
 
鍑芥暟鍚? strnset
鍔?nbsp; 鑳? 灝嗕竴涓覆涓殑鎵鏈夊瓧絎﹂兘璁句負鎸囧畾瀛楃
鐢?nbsp; 娉? char *strnset(char *str, char ch, unsigned n);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char *string = "abcdefghijklmnopqrstuvwxyz";
   char letter = 'x';
   printf("string before strnset: %sn", string);
   strnset(string, letter, 13);
   printf("string after  strnset: %sn", string);
   return 0;
}
 
 
鍑芥暟鍚? strpbrk
鍔?nbsp; 鑳? 鍦ㄤ覆涓煡鎵劇粰瀹氬瓧絎﹂泦涓殑瀛楃
鐢?nbsp; 娉? char *strpbrk(char *str1, char *str2);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char *string1 = "abcdefghijklmnopqrstuvwxyz";
   char *string2 = "onm";
   char *ptr;
   ptr = strpbrk(string1, string2);
   if (ptr)
      printf("strpbrk found first character: %cn", *ptr);
   else
      printf("strpbrk didn't find character in setn");
   return 0;
}
 
 
 
鍑芥暟鍚? strrchr
鍔?nbsp; 鑳? 鍦ㄤ覆涓煡鎵炬寚瀹氬瓧絎︾殑鏈鍚庝竴涓嚭鐜?
鐢?nbsp; 娉? char *strrchr(char *str, char c);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char string[15];
   char *ptr, c = 'r';
   strcpy(string, "This is a string");
   ptr = strrchr(string, c);
   if (ptr)
      printf("The character %c is at position: %dn", c, ptr-string);
   else
      printf("The character was not foundn");
   return 0;
}
 
 
 
鍑芥暟鍚? strrev
鍔?nbsp; 鑳? 涓插掕漿
鐢?nbsp; 娉? char *strrev(char *str);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char *forward = "string";
   printf("Before strrev(): %sn", forward);
   strrev(forward);
   printf("After strrev():  %sn", forward);
   return 0;
}
 
鍑芥暟鍚? strset
鍔?nbsp; 鑳? 灝嗕竴涓覆涓殑鎵鏈夊瓧絎﹂兘璁句負鎸囧畾瀛楃
鐢?nbsp; 娉? char *strset(char *str, char c);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char string[10] = "123456789";
   char symbol = 'c';
   printf("Before strset(): %sn", string);
   strset(string, symbol);
   printf("After strset():  %sn", string);
   return 0;
}
 
 
 
鍑芥暟鍚? strspn
鍔?nbsp; 鑳? 鍦ㄤ覆涓煡鎵炬寚瀹氬瓧絎﹂泦鐨勫瓙闆嗙殑絎竴嬈″嚭鐜?
鐢?nbsp; 娉? int strspn(char *str1, char *str2);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
   char *string1 = "1234567890";
   char *string2 = "123DC8";
   int length;
   length = strspn(string1, string2);
   printf("Character where strings differ is at position %dn", length);
   return 0;
}
 
 
鍑芥暟鍚? strstr
鍔?nbsp; 鑳? 鍦ㄤ覆涓煡鎵炬寚瀹氬瓧絎︿覆鐨勭涓嬈″嚭鐜?
鐢?nbsp; 娉? char *strstr(char *str1, char *str2);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char *str1 = "Borland International", *str2 = "nation", *ptr;
   ptr = strstr(str1, str2);
   printf("The substring is: %sn", ptr);
   return 0;
}
 
 
鍑芥暟鍚? strtod
鍔?nbsp; 鑳? 灝嗗瓧絎︿覆杞崲涓篸ouble鍨嬪?
鐢?nbsp; 娉? double strtod(char *str, char **endptr);
紼嬪簭渚?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   char input[80], *endptr;
   double value;
   printf("Enter a floating point number:");
   gets(input);
   value = strtod(input, &endptr);
   printf("The string is %s the number is %lfn", input, value);
   return 0;
}
 
 
 
鍑芥暟鍚? strtok
鍔?nbsp; 鑳? 鏌ユ壘鐢卞湪絎簩涓覆涓寚瀹氱殑鍒嗙晫絎﹀垎闅斿紑鐨勫崟璇?
鐢?nbsp; 娉? char *strtok(char *str1, char *str2);

紼嬪簭渚?
#include <string.h>
#include <stdio.h>
int main(void)
{
   char input[16] = "abc,d";
   char *p;
   /* strtok places a NULL terminator
   in front of the token, if found */
   p = strtok(input, ",");
   if (p)   printf("%sn", p);
   /* A second call to strtok using a NULL
   as the first parameter returns a pointer
   to the character following the token  */
   p = strtok(NULL, ",");
   if (p)   printf("%sn", p);
   return 0;
}
 
 
 
鍑芥暟鍚? strtol
鍔?nbsp; 鑳? 灝嗕覆杞崲涓洪暱鏁存暟
鐢?nbsp; 娉? long strtol(char *str, char **endptr, int base);

紼嬪簭渚?
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
   char *string = "87654321", *endptr;
   long lnumber;
   /* strtol converts string to long integer  */
   lnumber = strtol(string, &endptr, 10);
   printf("string = %s  long = %ldn", string, lnumber);
   return 0;
}
 
鍑芥暟鍚? strupr
鍔?nbsp; 鑳? 灝嗕覆涓殑灝忓啓瀛楁瘝杞崲涓哄ぇ鍐欏瓧姣?
鐢?nbsp; 娉? char *strupr(char *str);

紼嬪簭渚?
#include <stdio.h>
#include <string.h>
int main(void)
{
   char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;
   /* converts string to upper case characters */
   ptr = strupr(string);
   printf("%sn", ptr);
   return 0;
}
 
 
 
鍑芥暟鍚? swab
鍔?nbsp; 鑳? 浜ゆ崲瀛楄妭
鐢?nbsp; 娉? void swab (char *from, char *to, int nbytes);

紼嬪簭渚?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char source[15] = "rFna koBlrna d";
char target[15];
int main(void)
{
   swab(source, target, strlen(source));
   printf("This is target: %sn", target);
   return 0;
}



PS:isalpha()鏄瓧絎﹀嚱鏁幫紝涓嶆槸瀛楃涓插嚱鏁幫紝

isalpha
 


  鍘熷瀷錛歟xtern int isalpha(int c);
 
  鐢ㄦ硶錛?include <ctype.h>
 
  鍔熻兘錛氬垽鏂瓧絎鏄惁涓鴻嫳鏂囧瓧姣?br> 
  璇存槑錛氬綋c涓鴻嫳鏂囧瓧姣峚-z鎴朅-Z鏃訛紝榪斿洖闈為浂鍊鹼紝鍚﹀垯榪斿洖闆?/span>銆?br> 
  涓句緥錛?br>
      // isalpha.c
     
      #include <syslib.h>
      #include <ctype.h>
      #include <stdio.h>

      main()
      {
        int c;
       
        clrscr();        // clear screen
        printf("Press a key");
        for(;;)
        {
          c=getchar();
          clrscr();
          printf("%c: %s letter",c,isalpha(c)?"is":"not");
        }
        return 0; // just to avoid warnings by compiler
      }



蹇冪窘 2010-04-25 02:07 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲人人精品| 99精品欧美一区| 91久久精品日日躁夜夜躁欧美| 欧美人成在线| 亚洲午夜小视频| 先锋影音网一区二区| 亚洲欧美在线高清| 欧美国产成人在线| 99精品欧美一区二区三区综合在线| 亚洲精品国产精品乱码不99按摩| 欧美黄色一级视频| 亚洲图片在线观看| 老**午夜毛片一区二区三区| 欧美女主播在线| 狠狠入ady亚洲精品经典电影| 亚洲高清视频在线观看| 午夜亚洲精品| 日韩一级片网址| 久热精品视频| 国产一区日韩一区| 亚洲欧美资源在线| 欧美激情综合色| 在线观看91精品国产麻豆| 午夜激情一区| 亚洲一区在线直播| 欧美日韩一区二区三区在线| 亚洲国产精品成人| 男男成人高潮片免费网站| 亚洲欧美国产日韩天堂区| 国产精品久久| 亚洲一区日韩在线| 亚洲性图久久| 国产精品久久久久久久久借妻| 亚洲高清视频一区二区| 性欧美1819性猛交| 在线一区二区日韩| 欧美四级电影网站| 亚洲少妇自拍| 亚洲第一黄网| 欧美xx69| 欧美日韩不卡在线| 亚洲欧美日韩专区| 香蕉成人伊视频在线观看 | 亚洲综合视频网| 国产精品久久久对白| 国产精品99久久久久久www| 亚洲精品视频在线观看免费| 欧美日韩精品| 蜜臀av在线播放一区二区三区| 欧美不卡视频一区| 亚洲午夜一区| 欧美v日韩v国产v| 亚洲欧美日韩国产中文| 亚洲久久成人| 亚洲在线免费观看| 日韩视频不卡中文| 久久精品青青大伊人av| 极品少妇一区二区三区| 一本久久综合亚洲鲁鲁五月天| 欧美色道久久88综合亚洲精品| 久久aⅴ国产紧身牛仔裤| 欧美另类久久久品| 久久久久欧美精品| 欧美性大战久久久久久久蜜臀| 久久久亚洲精品一区二区三区| 欧美成年人网站| 久久久999精品视频| 国产精品久久久久aaaa| 亚洲国产午夜| 亚洲精品美女久久7777777| 老鸭窝91久久精品色噜噜导演| 久久国产精品一区二区| 午夜视频在线观看一区| 亚洲天堂免费观看| 激情小说另类小说亚洲欧美| 99精品欧美一区二区三区综合在线 | 亚洲无限av看| 欧美成人国产一区二区| 久久久免费av| 在线观看亚洲专区| 久久精品人人做人人综合| 性欧美大战久久久久久久久| 欧美韩日一区二区| 国产精品自拍网站| 中文精品视频一区二区在线观看| 日韩午夜在线| 欧美亚一区二区| 亚洲天堂av综合网| 欧美一区激情| 亚洲国产日韩欧美一区二区三区| 免费av成人在线| 一道本一区二区| 久久久五月婷婷| 夜夜狂射影院欧美极品| 国产精品成人国产乱一区| 亚洲欧美日本伦理| 亚洲第一在线| 欧美一二三区在线观看| 在线播放中文一区| 欧美日韩国产精品一区| 欧美一级午夜免费电影| 欧美刺激性大交免费视频 | 国产精品尤物| 久久网站免费| 一本一本久久| 国产一区二区电影在线观看| 欧美激情视频一区二区三区不卡| 亚洲一级在线观看| 日韩午夜在线观看视频| 欧美va亚洲va日韩∨a综合色| 在线视频日韩| 亚洲免费电影在线观看| 亚洲第一搞黄网站| 狠狠色综合网站久久久久久久| 欧美另类高清视频在线| 欧美aaaaaaaa牛牛影院| 麻豆乱码国产一区二区三区| 亚洲丶国产丶欧美一区二区三区| 欧美视频一区在线| 国产精品mm| 国产日韩欧美三级| 国产日本精品| 亚洲成色999久久网站| 亚洲激情另类| av不卡在线| 午夜在线一区二区| 欧美在线观看视频在线 | 国产欧亚日韩视频| 国产欧美日韩综合一区在线观看 | 一本一本久久a久久精品牛牛影视| 国产精品视频精品视频| av成人免费在线| 久久久www成人免费毛片麻豆| 久久精品99无色码中文字幕 | 亚洲免费在线| 久久在线视频在线| 91久久在线| 亚洲一区免费网站| 久久国产欧美精品| 欧美日韩国产色视频| 欧美影院在线播放| 久久夜色精品国产欧美乱| 欧美高清一区| 亚洲自拍偷拍视频| 欧美激情一区二区三区在线视频观看| 欧美日本在线看| 国产一区日韩一区| 亚洲欧美电影院| 国产精品三级久久久久久电影| 国产精品网站在线播放| 亚洲精品一二区| 老司机成人网| 久久精品国产在热久久| 国产欧亚日韩视频| 久久精品国产成人| 午夜一区二区三区不卡视频| 国产精品户外野外| 午夜精品成人在线视频| 亚洲一区二区av电影| 国产精品日本一区二区| 亚洲欧美不卡| 性色一区二区| 亚洲第一精品电影| 亚洲国产精品va在线看黑人| 欧美国产日韩一区二区三区| 亚洲久久成人| 午夜精品区一区二区三| 黄色成人在线| 亚洲精品视频免费在线观看| 国产精品久久久久久久免费软件 | 暖暖成人免费视频| 99re视频这里只有精品| 一区二区精品国产| 在线播放日韩| 亚洲永久免费观看| 亚洲国产综合视频在线观看| 亚洲精品小视频在线观看| 国产目拍亚洲精品99久久精品| 免费成人在线观看视频| 亚洲精品美女在线观看| 国产精品每日更新在线播放网址| 久久久久久电影| 国产精品久久久久免费a∨大胸| 久久国产一区| 国产精品久久久久久超碰| 欧美成人一区二区| 国产亚洲欧美一区在线观看| 国产精品一区二区黑丝| 久久精品一级爱片| 国产精品青草久久| 亚洲欧洲精品一区二区三区波多野1战4| 国产精品久久久久久av下载红粉| 欧美激情一区二区三区在线| 欧美偷拍另类| 在线视频亚洲| 午夜伦理片一区| 国产精品亚洲а∨天堂免在线| 日韩一级免费| 亚洲一区尤物| 国产区日韩欧美|