锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区二区视频免费观看,国产一区在线播放,欧美另类极品videosbest最新版本http://m.shnenglu.com/cppopp/zh-cnSun, 16 Nov 2025 20:26:50 GMTSun, 16 Nov 2025 20:26:50 GMT60utf8togb2312 璺ㄥ鉤鍙?/title><link>http://m.shnenglu.com/cppopp/archive/2018/11/06/216041.html</link><dc:creator>sheng</dc:creator><author>sheng</author><pubDate>Tue, 06 Nov 2018 08:59:00 GMT</pubDate><guid>http://m.shnenglu.com/cppopp/archive/2018/11/06/216041.html</guid><wfw:comment>http://m.shnenglu.com/cppopp/comments/216041.html</wfw:comment><comments>http://m.shnenglu.com/cppopp/archive/2018/11/06/216041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppopp/comments/commentRss/216041.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppopp/services/trackbacks/216041.html</trackback:ping><description><![CDATA[<div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include<iconv.h> <br />#include <stdio.h><br /><br />#include<iconv.h><br /><span style="color: #0000FF; ">using</span> <span style="color: #0000FF; ">namespace</span> std;<br /><span style="color: #0000FF; ">int</span> utf8togb2312(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> *sourcebuf,size_t sourcelen,<span style="color: #0000FF; ">char</span> *destbuf,size_t destlen) {   <br /><br />iconv_t cd;   <br /><br /><span style="color: #0000FF; ">if</span>( (cd = iconv_open("gb2312","utf-8")) ==0 )     <br /><br />      <span style="color: #0000FF; ">return</span> -1;  <br /><br />memset(destbuf,0,destlen);   <br /><br /><span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> **source = &sourcebuf;   <br /><br /><span style="color: #0000FF; ">char</span> **dest = &destbuf;<br /><span style="color: #0000FF; ">if</span>(-1 == iconv(cd,source,&sourcelen,dest,&destlen))     <br /><br />     <span style="color: #0000FF; ">return</span> -1;   <br /><br />iconv_close(cd);   <br /><br /><span style="color: #0000FF; ">return</span> 0;   <br /><br />}<br /><span style="color: #0000FF; ">int</span> gb2312toutf8(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> *sourcebuf,size_t sourcelen,<span style="color: #0000FF; ">char</span> *destbuf,size_t destlen) {   <br /><br />iconv_t cd;   <span style="color: #0000FF; ">if</span>( (cd = iconv_open("utf-8","gb2312")) ==0 )     <br /><br /><span style="color: #0000FF; ">return</span> -1;   memset(destbuf,0,destlen);   <br /><br /><span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span> **source = &sourcebuf;   <br /><br /><span style="color: #0000FF; ">char</span> **dest = &destbuf;<br />  <span style="color: #0000FF; ">if</span>(-1 == iconv(cd,source,&sourcelen,dest,&destlen))     <br /><br /><span style="color: #0000FF; ">return</span> -1;   </div></div><div></div><img src ="http://m.shnenglu.com/cppopp/aggbug/216041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppopp/" target="_blank">sheng</a> 2018-11-06 16:59 <a href="http://m.shnenglu.com/cppopp/archive/2018/11/06/216041.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綰跨▼姹?/title><link>http://m.shnenglu.com/cppopp/archive/2016/08/26/214233.html</link><dc:creator>sheng</dc:creator><author>sheng</author><pubDate>Fri, 26 Aug 2016 08:46:00 GMT</pubDate><guid>http://m.shnenglu.com/cppopp/archive/2016/08/26/214233.html</guid><wfw:comment>http://m.shnenglu.com/cppopp/comments/214233.html</wfw:comment><comments>http://m.shnenglu.com/cppopp/archive/2016/08/26/214233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppopp/comments/commentRss/214233.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppopp/services/trackbacks/214233.html</trackback:ping><description><![CDATA[     鎽樿: 杞澆鑷猦ttp://blog.csdn.net/u010984552/article/details/51887108涓轟粈涔堥渶瑕佺嚎紼嬫睜鐩墠鐨勫ぇ澶氭暟緗戠粶鏈嶅姟鍣紝鍖呮嫭Web鏈嶅姟鍣ㄣ丒mail鏈嶅姟鍣ㄤ互鍙?qiáng)鏁版嵁搴撴湇鍔″櫒绛夐兘鍏锋湁涓涓叡鍚岀偣錛屽氨鏄崟浣嶆椂闂村唴蹇呴』澶勭悊鏁扮洰宸ㄥぇ鐨勮繛鎺ヨ姹傦紝浣嗗鐞嗘椂闂村嵈鐩稿杈冪煭銆?nbsp;浼?緇熷綰跨▼鏂規(guī)涓垜浠噰鐢ㄧ殑鏈嶅姟鍣ㄦā鍨嬪垯鏄竴鏃︽帴鍙楀埌璇鋒眰涔嬪悗錛屽嵆鍒涘緩涓涓柊鐨勭嚎紼嬶紝鐢辮綰跨▼鎵ц浠?..  <a href='http://m.shnenglu.com/cppopp/archive/2016/08/26/214233.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/cppopp/aggbug/214233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppopp/" target="_blank">sheng</a> 2016-08-26 16:46 <a href="http://m.shnenglu.com/cppopp/archive/2016/08/26/214233.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>澶х妯″紡鍜屽皬绔ā寮?/title><link>http://m.shnenglu.com/cppopp/archive/2016/08/17/214189.html</link><dc:creator>sheng</dc:creator><author>sheng</author><pubDate>Wed, 17 Aug 2016 06:21:00 GMT</pubDate><guid>http://m.shnenglu.com/cppopp/archive/2016/08/17/214189.html</guid><wfw:comment>http://m.shnenglu.com/cppopp/comments/214189.html</wfw:comment><comments>http://m.shnenglu.com/cppopp/archive/2016/08/17/214189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppopp/comments/commentRss/214189.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppopp/services/trackbacks/214189.html</trackback:ping><description><![CDATA[<span style="color: #333333; line-height: 26px; font-family: Verdana; font-size: 16px; background-color: #ffffff;"><br />鎽樿嚜</span>http://blog.csdn.net/hackbuteer1/article/details/7722667<span style="color: #333333; line-height: 26px; font-family: Verdana; font-size: 16px; background-color: #ffffff;"><br /></span><span style="color: #333333; line-height: 26px; font-family: Verdana; font-size: 16px; background-color: #ffffff;"><br />鍦?鍚勭璁$畻鏈轟綋緋葷粨鏋勪腑錛屽浜庡瓧鑺傘佸瓧絳夌殑瀛樺偍鏈哄埗鏈夋墍涓嶅悓錛屽洜鑰屽紩鍙戜簡璁$畻鏈?閫氫俊棰?鍩熶腑涓涓緢閲嶈鐨勯棶棰橈紝鍗抽氫俊鍙屾柟浜ゆ祦鐨勪俊鎭崟鍏冿紙姣旂壒銆佸瓧鑺傘佸瓧銆佸弻瀛楃瓑絳夛級搴旇浠ヤ粈涔堟牱鐨勯『搴忚繘琛屼紶閫併傚鏋滀笉杈炬垚涓鑷寸殑瑙勫垯錛岄氫俊鍙屾柟灝嗘棤娉曡繘琛屾 紜殑緙?璇戠爜浠庤屽鑷撮氫俊澶辮觸銆傜洰鍓嶅湪鍚勭浣撶郴鐨勮綆楁満涓氬父閲囩敤鐨勫瓧鑺傚瓨鍌ㄦ満鍒朵富瑕佹湁涓ょ錛欱ig-Endian鍜孡ittle-Endian錛屼笅闈㈠厛浠庡瓧鑺傚簭璇磋搗銆?br />涓銆佷粈涔堟槸瀛楄妭搴?br /><span style="color: #ff6600;">瀛楄妭搴忥紝欏懼悕鎬濅箟瀛楄妭鐨勯『搴忥紝鍐嶅璇翠袱鍙ュ氨鏄ぇ浜庝竴涓瓧鑺傜被鍨嬬殑鏁版嵁鍦ㄥ唴瀛樹腑鐨勫瓨鏀鵑『搴?涓涓瓧鑺傜殑鏁版嵁褰撶劧灝辨棤闇璋堥『搴忕殑闂浜?銆?/span>鍏跺疄澶ч儴鍒嗕漢鍦ㄥ疄闄呯殑寮 鍙戜腑閮藉緢灝戜細(xì)鐩存帴鍜屽瓧鑺傚簭鎵撲氦閬撱傚敮鏈夊湪璺ㄥ鉤鍙頒互鍙?qiáng)缃懢l滅▼搴忎腑瀛楄妭搴忔墠鏄竴涓簲璇ヨ鑰冭檻鐨勯棶棰樸?br /><br />鍦ㄦ墍鏈夌殑浠嬬粛瀛楄妭搴忕殑鏂囩珷涓兘浼?xì)鎻愬埌瀛?鑺傚簭鍒嗕負(fù)涓ょ被錛欱ig-Endian鍜孡ittle-Endian錛屽紩鐢ㄦ爣鍑嗙殑Big-Endian鍜孡ittle-Endian鐨勫畾涔夊涓嬶細(xì)<br />a) Little-Endian灝辨槸浣庝綅瀛楄妭鎺掓斁鍦ㄥ唴瀛樼殑浣庡湴鍧绔紝楂樹綅瀛楄妭鎺掓斁鍦ㄥ唴瀛樼殑楂樺湴鍧绔?br />b) Big-Endian灝辨槸楂樹綅瀛楄妭鎺掓斁鍦ㄥ唴瀛樼殑浣庡湴鍧绔紝浣庝綅瀛楄妭鎺掓斁鍦ㄥ唴瀛樼殑楂樺湴鍧绔?br />c) 緗戠粶瀛楄妭搴忥細(xì)TCP/IP鍚勫眰鍗忚灝嗗瓧鑺傚簭瀹氫箟涓築ig-Endian錛屽洜姝CP/IP鍗忚涓嬌鐢ㄧ殑瀛楄妭搴忛氬父縐頒箣涓虹綉緇滃瓧鑺傚簭銆?br /><br />1.1 浠涔堟槸楂?浣庡湴鍧绔?br />棣栧厛鎴戜滑瑕佺煡閬揅紼嬪簭鏄犲儚涓唴瀛樼殑絀洪棿甯冨眬鎯呭喌錛氬湪銆奀涓?瀹剁紪紼嬨嬩腑鎴栬呫奤nix鐜楂樼駭緙栫▼銆嬩腑鏈夊叧浜庡唴瀛樼┖闂村竷灞鎯呭喌鐨勮鏄庯紝澶ц嚧濡備笅鍥撅細(xì)<br /><span style="color: #ff0000;">----------------------- 鏈楂樺唴瀛樺湴鍧 0xffffffff</span><br /><span style="color: #000099;">鏍堝簳<br />鏍?br />鏍堥《</span><br />-----------------------<br /><br />NULL (絀烘礊)<br />-----------------------<br />鍫?br />-----------------------<br />鏈垵濮?鍖栫殑鏁版嵁<br />----------------------- 緇熺О鏁版嵁孌?br />鍒濆鍖栫殑鏁版嵁<br />-----------------------<br />姝?鏂囨(浠g爜孌?<br /><span style="color: #ff0000;">----------------------- 鏈浣庡唴瀛樺湴鍧 0x00000000</span><br /><span style="color: #cc33cc;">鐢卞浘鍙互鐪嬪嚭錛屽啀鍐呭瓨鍒嗗竷涓紝鏍堟槸鍚戜笅澧為暱鐨勶紝鑰屽爢鏄悜涓婂闀跨殑銆?/span><br />浠ヤ笂鍥句負(fù)渚嬪鏋滄垜浠湪鏍?涓婂垎閰嶄竴涓猽nsigned char buf[4]錛岄偅涔堣繖涓暟緇勫彉閲忓湪鏍堜笂鏄浣曞竷灞鐨勫憿錛熺湅涓嬪浘錛?br /><strong><span style="color: #3333ff;">鏍堝簳 錛堥珮鍦板潃錛?/span></strong><br />----------<br /><span style="color: #ff0000;"><strong>buf[3]<br />buf[2]<br />buf[1]<br />buf[0]</strong></span><br />----------<br /><span style="color: #3333ff;"><strong>鏍堥《 錛堜綆鍦板潃錛?/strong></span><br />鍏跺疄錛屾垜浠彲浠ヨ嚜宸卞湪緙栬瘧鍣ㄩ噷闈㈠垱寤轟竴涓暟緇勶紝鐒跺悗鍒嗗埆杈撳嚭鏁扮粍縐嶆瘡涓厓绱犵殑鍦板潃錛屾潵楠岃瘉涓涓嬨?br />1.2 浠涔堟槸楂?浣庡瓧鑺?br />鐜板湪鎴戜滑<strong><span style="color: #cc33cc;">寮勬竻浜嗛珮/浣庡湴鍧錛屾帴鐫鑰冭檻楂?浣庡瓧鑺?/span></strong>銆傛湁浜涙枃绔犱腑縐頒綆浣嶅瓧鑺備負(fù)鏈浣庢湁鏁堜綅錛岄珮浣嶅瓧鑺備負(fù)鏈楂樻湁鏁堜綅銆傚鏋滄垜浠湁涓涓?2浣嶆棤絎﹀彿鏁村瀷0x12345678錛岄偅涔堥珮浣嶆槸浠涔堬紝浣庝綅鍙堟槸浠涔堝憿錛?鍏跺疄寰堢畝鍗曘?span style="color: #ff0000;"><strong>鍦ㄥ崄榪涘埗涓垜浠兘璇撮潬宸﹁竟鐨勬槸楂樹綅錛岄潬鍙寵竟鐨勬槸浣庝綅錛屽湪鍏朵粬榪涘埗涔熸槸濡傛銆傚氨鎷?0x12345678鏉ヨ錛屼粠楂樹綅鍒頒綆浣嶇殑瀛楄妭渚濇鏄?x12銆?x34銆?x56鍜?x78銆?/strong></span><br />楂?浣庡湴鍧绔拰楂?浣庡瓧鑺傞兘寮勬竻浜嗐傛垜浠啀鏉ュ洖欏?涓涓婤ig-Endian鍜孡ittle-Endian鐨勫畾涔夛紝騫剁敤鍥劇ず璇存槑涓ょ瀛楄妭搴忥細(xì)<br />浠nsigned int value = 0x12345678涓轟緥錛屽垎鍒湅鐪嬪湪涓ょ瀛楄妭搴忎笅鍏跺瓨鍌ㄦ儏鍐碉紝鎴戜滑鍙互鐢╱nsigned char buf[4]鏉ヨ〃紺簐alue錛?br /><span style="color: #3333ff;"><strong>Big-Endian: 浣庡湴鍧瀛樻斁楂樹綅</strong></span>錛屽涓嬪浘錛?br />鏍堝簳 錛堥珮鍦板潃錛?br />---------------<br /><span style="color: #ff0000;">buf[3] (0x78) -- 浣庝綅</span><br />buf[2] (0x56)<br />buf[1] (0x34)<br /><span style="color: #ff0000;">buf[0] (0x12) -- 楂樹綅</span><br />---------------<br />鏍堥《 錛堜綆鍦板潃錛?br /><br /><span style="color: #3333ff;"><strong>Little-Endian: 浣庡湴鍧瀛樻斁浣庝綅</strong></span>錛屽涓嬪浘錛?br />鏍堝簳 錛堥珮鍦板潃錛?br />---------------<br /><span style="color: #ff0000;">buf[3] (0x12) -- 楂樹綅</span><br />buf[2] (0x34)<br />buf[1] (0x56)<br /><span style="color: #ff0000;">buf[0] (0x78) -- 浣庝綅</span><br />--------------<br />鏍?欏?錛堜綆鍦板潃錛?br /><br />浜屻佸悇縐岴ndian<br />2.1 Big-Endian<br />璁$畻鏈轟綋緋葷粨鏋勪腑涓縐嶆弿榪板瀛楄妭瀛樺偍欏哄簭鐨勬湳璇紝鍦ㄨ繖縐嶆満鍒朵腑鏈閲嶈瀛楄妭錛圡SB錛夊瓨鏀懼湪鏈浣庣鐨勫湴鍧 涓娿傞噰鐢ㄨ繖縐嶆満鍒剁殑澶勭悊鍣ㄦ湁IBM3700緋誨垪銆丳DP-10銆丮ortolora寰鐞嗗櫒緋誨垪鍜岀粷澶у鏁扮殑RISC澶勭悊鍣ㄣ?br />+----------+<br />| 0x34 |<-- 0x00000021<br />+----------+<br />| 0x12 |<-- 0x00000020<br />+----------+<br />鍥?1錛氬弻瀛楄妭鏁?x1234浠ig-Endian鐨勬柟寮忓瓨鍦ㄨ搗濮嬪湴鍧0x00000020涓?br /><br />鍦˙ig-Endian涓紝瀵逛簬bit搴忓垪 涓殑搴忓彿緙栨帓鏂瑰紡濡備笅錛堜互鍙屽瓧鑺傛暟0x8B8A涓轟緥錛夛細(xì)<br />bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />+-----------------------------------------+<br />val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |<br />+----------------------------------------+<br />鍥?2錛欱ig-Endian鐨刡it搴忓垪緙栫爜鏂瑰紡<br />2.2 Little-Endian<br />璁$畻鏈轟綋緋葷粨鏋勪腑 涓縐嶆弿榪板瀛楄妭瀛樺偍欏哄簭鐨勬湳璇紝鍦ㄨ繖縐嶆満鍒朵腑鏈涓嶉噸瑕佸瓧鑺傦紙LSB錛夊瓨鏀懼湪鏈浣庣鐨勫湴鍧涓娿傞噰鐢ㄨ繖縐嶆満鍒剁殑澶勭悊鍣ㄦ湁PDP-11銆乂AX銆?strong><span style="color: #cc33cc;">Intel緋誨垪寰鐞嗗櫒</span></strong>鍜屼竴浜涚綉緇滈氫俊璁懼銆傝鏈闄や簡鎻忚堪澶氬瓧鑺傚瓨鍌ㄩ『搴忓榪樺父甯哥敤鏉ユ弿榪頒竴涓瓧鑺備腑鍚勪釜姣旂壒鐨勬帓鏀炬搴忋?br /><br />+----------+<br />| 0x12 |<-- 0x00000021<br />+----------+<br />| 0x34 |<-- 0x00000020<br />+----------+<br /><br />鍥?錛氬弻瀛楄妭鏁?x1234浠ittle-Endian鐨勬柟寮忓瓨鍦ㄨ搗濮嬪湴鍧0x00000020涓?br />銆鍦?Little-Endian涓紝瀵逛簬bit搴忓垪涓殑搴忓彿緙栨帓鍜孊ig-Endian鍒氬ソ鐩稿弽錛屽叾鏂瑰紡濡備笅錛堜互鍙屽瓧鑺傛暟0x8B8A涓轟緥錛夛細(xì)<br />bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />+-----------------------------------------+<br />val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |<br />+-----------------------------------------+<br />鍥?4錛歀ittle-Endian鐨刡it搴忓垪緙栫爜鏂瑰紡<br /><span style="color: #ff0000;"><strong>娉ㄦ剰錛氶氬父鎴戜滑璇寸殑涓繪満搴忥紙Host Order錛夊氨鏄伒寰狶ittle-Endian瑙勫垯</strong></span>銆傛墍浠ュ綋涓ゅ彴涓繪満涔嬮棿瑕侀氳繃TCP/IP鍗忚榪涜閫氫俊鐨勬椂鍊欏氨闇瑕佽皟鐢ㄧ浉搴旂殑鍑芥暟榪涜涓繪満搴?錛圠ittle-Endian錛夊拰緗戠粶搴忥紙Big-Endian錛夌殑杞崲銆?br />閲囩敤 Little-endian妯″紡鐨凜PU瀵規(guī)搷浣滄暟鐨勫瓨鏀炬柟寮忔槸浠庝綆瀛楄妭鍒伴珮瀛楄妭錛岃孊ig-endian妯″紡瀵規(guī)搷浣滄暟鐨勫瓨鏀炬柟寮忔槸浠庨珮瀛楄妭鍒頒綆瀛楄妭銆?32bit瀹界殑鏁?x12345678鍦↙ittle-endian妯″紡CPU鍐呭瓨涓殑瀛樻斁鏂瑰紡錛堝亣璁句粠鍦板潃0x4000寮濮嬪瓨鏀撅級涓猴細(xì)<br />                                          鍐呭瓨鍦板潃    <span style="color: #3333ff;"> 0x4000</span>     0x4001     0x4002     0x4003<br />                                          瀛樻斁鍐呭     <span style="color: #3333ff;">0x78</span>        0x56        0x34         0x12<br />鑰屽湪Big- endian妯″紡CPU鍐呭瓨涓殑瀛樻斁鏂瑰紡鍒欎負(fù)錛?br />                                          鍐呭瓨鍦板潃     <span style="color: #3333ff;">0x4000</span>     0x4001     0x4002     0x4003<br />                                          瀛樻斁鍐呭     <span style="color: #3366ff;">0x12</span>         0x34        0x56         0x78<br />鍏蜂綋鐨勫尯鍒涓嬶細(xì)<br /><img src="http://my.csdn.net/uploads/201208/26/1345955190_9259.png" alt="" style="border: none; max-width: 100%;" /><br /><img src="http://my.csdn.net/uploads/201208/26/1345955203_5462.png" alt="" style="border: none; max-width: 100%;" /><br /><span style="color: #000000;"><strong>涓夈丅ig-Endian鍜孡ittle-Endian浼樼己鐐?/strong></span><br />Big-Endian浼樼偣錛氶潬棣栧厛鎻愬彇楂樹綅瀛楄妭錛屼綘鎬繪槸鍙互鐢辯湅鐪嬪湪鍋忕Щ浣嶇疆涓?鐨勫瓧鑺傛潵紜畾榪欎釜鏁板瓧鏄?姝f暟榪樻槸璐熸暟銆備綘涓嶅繀鐭ラ亾榪欎釜鏁板兼湁澶氶暱錛屾垨鑰呬綘涔熶笉蹇呰繃涓浜涘瓧鑺傛潵鐪嬭繖涓暟鍊兼槸鍚﹀惈鏈夌鍙蜂綅銆傝繖涓暟鍊兼槸浠ュ畠浠鎵撳嵃鍑烘潵鐨勯『搴忓瓨鏀劇殑錛屾墍浠ヤ粠浜岃繘鍒跺埌鍗佽繘鍒剁殑鍑芥暟鐗瑰埆鏈夋晥銆傚洜鑰岋紝瀵逛簬涓嶅悓瑕佹眰鐨勬満鍣紝鍦ㄨ璁″瓨鍙栨柟寮忔椂灝變細(xì)涓嶅悓銆?br /><br />Little-Endian浼樼偣錛氭彁鍙栦竴涓紝涓や釜錛屽洓涓垨鑰呮洿闀垮瓧鑺傛暟鎹殑姹囩紪鎸囦護(hù)浠ヤ笌鍏朵粬鎵鏈夋牸寮忕浉鍚岀殑鏂瑰紡榪涜錛氶鍏堝湪鍋忕Щ鍦板潃涓?鐨勫湴鏂規(guī)彁鍙栨渶浣庝綅鐨勫瓧鑺傦紝鍥犱負(fù)鍦板潃鍋忕Щ鍜屽瓧鑺傛暟鏄竴瀵逛竴鐨勫叧緋伙紝澶氶噸綺懼害鐨勬暟瀛﹀嚱鏁板氨鐩稿鍦板鏄撳啓浜嗐?br /><br />濡傛灉浣犲鍔犳暟瀛楃殑鍊鹼紝浣犲彲鑳藉湪宸﹁竟澧炲姞鏁板瓧錛堥珮浣嶉潪鎸囨暟鍑芥暟闇瑕佹洿澶氱殑鏁板瓧錛夈?鍥犳錛?緇忓父闇瑕佸鍔犱袱浣嶆暟瀛楀茍縐誨姩瀛樺偍鍣ㄩ噷鎵鏈塀ig-endian欏哄簭鐨勬暟瀛楋紝鎶婃墍鏈夋暟鍚戝彸縐伙紝榪欎細(xì)澧炲姞璁$畻鏈虹殑宸ヤ綔閲忋備笉榪囷紝浣跨敤Little- Endian鐨勫瓨鍌ㄥ櫒涓笉閲嶈鐨勫瓧鑺傚彲浠ュ瓨鍦ㄥ畠鍘熸潵鐨勪綅緗紝鏂扮殑鏁板彲浠ュ瓨鍦ㄥ畠鐨勫彸杈圭殑楂樹綅鍦板潃閲屻傝繖灝辨剰鍛崇潃璁$畻鏈轟腑鐨勬煇浜涜綆楀彲浠ュ彉寰楁洿鍔犵畝鍗曞拰蹇熴?br />鍥涖佽鍐欎竴涓狢鍑芥暟錛岃嫢澶勭悊鍣ㄦ槸Big_endian鐨勶紝鍒欒繑鍥?錛涜嫢鏄疞ittle_endian鐨勶紝鍒欒繑鍥?銆?br /></span><div bg_cpp"="" style="width: 700.906px; overflow-y: hidden; position: relative; color: #333333; line-height: 26px;"><div><div><strong>[cpp]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_plain.gif"); background-position: left top; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_copy.gif"); background-position: left top; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 514px; top: 4907px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #2e8b57; font-weight: bold;">int</span> checkCPU(void)  </li><li style="line-height: 18px;">{  </li><li style="line-height: 18px;">    union  </li><li style="line-height: 18px;">    {  </li><li style="line-height: 18px;">        <span style="color: #2e8b57; font-weight: bold;">int</span> a;  </li><li style="line-height: 18px;">        <span style="color: #2e8b57; font-weight: bold;">char</span> b;  </li><li style="line-height: 18px;">    }c;  </li><li style="line-height: 18px;">    c.a = 1;  </li><li style="line-height: 18px;">    return (c.b == 1);  </li><li style="line-height: 18px;">}  </li></ol></div><span style="color: #333333; line-height: 26px; font-family: Verdana; font-size: 16px; background-color: #ffffff;">鍓栨瀽錛氱敱浜庤仈鍚堜綋union鐨勫瓨鏀鵑『搴忔槸鎵鏈夋垚鍛橀兘浠庝綆鍦板潃寮濮嬪瓨鏀撅紝鍒╃敤璇ョ壒鎬у氨鍙互杞繪澗鍦拌幏寰椾簡CPU瀵瑰唴瀛橀噰鐢↙ittle- endian榪樻槸Big-endian妯″紡璇誨啓銆?br />璇存槑錛?br />1  鍦╟涓紝鑱斿悎浣擄紙鍏辯敤浣擄級鐨勬暟鎹垚鍛橀兘鏄粠浣庡湴鍧寮濮嬪瓨鏀俱?br />2  鑻ユ槸灝忕妯″紡錛岀敱浣庡湴鍧鍒伴珮鍦板潃c.a瀛樻斁涓?x01 00 00 00錛宑.b琚祴鍊間負(fù)0x01錛?br />  ————————————————————————————<br />   鍦板潃 0x00000000 0x00000001 0x00000002 0x00000003<br />   c.a  01         00         00         00<br />   c.b  01         00        <br />  ————————————————————————————  <br />3  鑻ユ槸澶х妯″紡錛岀敱浣庡湴鍧鍒伴珮鍦板潃c.a瀛樻斁涓?x00 00 00 01錛宑.b琚祴鍊間負(fù)0x0錛?br />  ————————————————————————————<br />   鍦板潃 0x00000000 0x00000001 0x00000002 0x00000003<br />   c.a  00         00         00         01<br />   c.b  00         00                 <br />  ————————————————————————————  <br />4  鏍規(guī)嵁c.b鐨勫肩殑鎯呭喌灝卞彲浠ュ垽鏂璫pu鐨勬ā寮忎簡銆?br /><br /></span><span style="color: #333333; line-height: 26px; font-family: Verdana; background-color: #ffffff;">涓句緥錛屼竴涓?6榪涘埗鏁版槸 0x11 22 33錛屽叾瀛樻斁鐨勪綅緗槸<br />鍦板潃0x3000 涓瓨鏀?1<br />鍦板潃0x3001 涓瓨鏀?2<br />鍦板潃0x3002 涓瓨鏀?3<br />榪炶搗鏉ュ氨鍐欐垚鍦板潃0x3000-0x3002涓瓨鏀句簡鏁版嵁0x112233<br />鑰岃繖縐嶅瓨鏀懼拰琛ㄧず鏂瑰紡錛屾濂界鍚堝ぇ绔?/span><span style="color: #333333; line-height: 26px; font-family: Verdana; background-color: #ffffff;"><br />鍙﹀涓涓瘮杈冨ソ鐞嗚В鐨勫啓娉曞涓嬶細(xì)<br /></span><div bg_cpp"="" style="width: 700.906px; overflow-y: hidden; position: relative; color: #333333; line-height: 26px;"><div><div><strong>[cpp]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_plain.gif"); background-position: left top; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_copy.gif"); background-position: left top; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 514px; top: 5806px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #2e8b57; font-weight: bold;">bool</span> checkCPU()     // 濡傛灉鏄ぇ绔ā寮忥紝榪斿洖鐪?nbsp; </li><li style="line-height: 18px;">{  </li><li style="line-height: 18px;">    <span style="color: #2e8b57; font-weight: bold;">short</span> <span style="color: #2e8b57; font-weight: bold;">int</span> test = 0x1234;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    if( *((<span style="color: #2e8b57; font-weight: bold;">char</span> *)&test) == 0x12)     // 浣庡湴鍧瀛樻斁楂樺瓧鑺傛暟鎹?nbsp; </li><li style="line-height: 18px;">        return true;  </li><li style="line-height: 18px;">    else  </li><li style="line-height: 18px;">        return false;  </li><li style="line-height: 18px;">}  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;"><span style="color: #2e8b57; font-weight: bold;">int</span> main(void)  </li><li style="line-height: 18px;">{  </li><li style="line-height: 18px;">    if( !checkCPU())  </li><li style="line-height: 18px;">        cout<<"Little endian"<<endl;  </li><li style="line-height: 18px;">    else  </li><li style="line-height: 18px;">        cout<<"Big endian"<<endl;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    return 0;  </li><li style="line-height: 18px;">}  </li></ol></div><span style="color: #333333; line-height: 26px; font-family: Verdana; background-color: #ffffff;">鎴栬呬笅闈袱縐嶅啓娉曚篃鏄彲浠ョ殑</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><div bg_cpp"="" style="width: 700.906px; overflow-y: hidden; position: relative; color: #333333; line-height: 26px;"><div><div><strong>[cpp]</strong> <a title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_plain.gif"); background-position: left top; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_copy.gif"); background-position: left top; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 514px; top: 6243px; width: 18px; height: 18px; z-index: 99;"></div></span></div></div><ol start="1"><li style="line-height: 18px;"><span style="color: #2e8b57; font-weight: bold;">int</span> main(void)  </li><li style="line-height: 18px;">{  </li><li style="line-height: 18px;">    <span style="color: #2e8b57; font-weight: bold;">short</span> <span style="color: #2e8b57; font-weight: bold;">int</span> a = 0x1234;  </li><li style="line-height: 18px;">    <span style="color: #2e8b57; font-weight: bold;">char</span> *p = (<span style="color: #2e8b57; font-weight: bold;">char</span> *)&a;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    if( *p == 0x34)  </li><li style="line-height: 18px;">        cout<<"Little endian"<<endl;  </li><li style="line-height: 18px;">    else  </li><li style="line-height: 18px;">        cout<<"Big endian"<<endl;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    return 0;  </li><li style="line-height: 18px;">}  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;"><span style="color: #2e8b57; font-weight: bold;">int</span> main(void)  </li><li style="line-height: 18px;">{  </li><li style="line-height: 18px;">    <span style="color: #2e8b57; font-weight: bold;">short</span> <span style="color: #2e8b57; font-weight: bold;">int</span> a = 0x1234;  </li><li style="line-height: 18px;">    <span style="color: #2e8b57; font-weight: bold;">char</span> x0 , x1;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    x0 = ((<span style="color: #2e8b57; font-weight: bold;">char</span> *)&a)[0];  </li><li style="line-height: 18px;">    x1 = ((<span style="color: #2e8b57; font-weight: bold;">char</span> *)&a)[1];  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    if( x0 == 0x34)  </li><li style="line-height: 18px;">        cout<<"Little endian"<<endl;  </li><li style="line-height: 18px;">    else  </li><li style="line-height: 18px;">        cout<<"Big endian"<<endl;  </li><li style="line-height: 18px;">  </li><li style="line-height: 18px;">    return 0;  </li><li style="line-height: 18px;">}  </li><li></li></ol></div><img src ="http://m.shnenglu.com/cppopp/aggbug/214189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppopp/" target="_blank">sheng</a> 2016-08-17 14:21 <a href="http://m.shnenglu.com/cppopp/archive/2016/08/17/214189.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞澆 C++ 铏氬嚱鏁拌〃瑙f瀽http://m.shnenglu.com/cppopp/archive/2016/06/30/213829.htmlshengshengThu, 30 Jun 2016 07:36:00 GMThttp://m.shnenglu.com/cppopp/archive/2016/06/30/213829.htmlhttp://m.shnenglu.com/cppopp/comments/213829.htmlhttp://m.shnenglu.com/cppopp/archive/2016/06/30/213829.html#Feedback0http://m.shnenglu.com/cppopp/comments/commentRss/213829.htmlhttp://m.shnenglu.com/cppopp/services/trackbacks/213829.html闃呰鍏ㄦ枃

sheng 2016-06-30 15:36 鍙戣〃璇勮
]]>
鍙沖乏娉曞垯----澶嶆潅鎸囬拡瑙f瀽http://m.shnenglu.com/cppopp/archive/2016/04/14/213276.htmlshengshengThu, 14 Apr 2016 05:49:00 GMThttp://m.shnenglu.com/cppopp/archive/2016/04/14/213276.htmlhttp://m.shnenglu.com/cppopp/comments/213276.htmlhttp://m.shnenglu.com/cppopp/archive/2016/04/14/213276.html#Feedback0http://m.shnenglu.com/cppopp/comments/commentRss/213276.htmlhttp://m.shnenglu.com/cppopp/services/trackbacks/213276.html棣栧厛鐪嬬湅濡備笅涓涓0鏄庯細(xì)

 

int* ( *( *fun )( int* ) )[10];

 

榪欐槸涓涓細(xì)璁╁垵瀛﹁呮劅鍒板ご鏅曠洰鐪┿佹劅鍒版亹鎯х殑鍑芥暟鎸囬拡澹版槑銆傚湪鐔熺粌鎺屾彙C/C++鐨勫0鏄庤娉曚箣鍓嶏紝涓嶅涔?fàn)涓瀹氱殑瑙勫垯錛屾兂鐞嗚В濂借繖綾誨鏉傚0鏄庢槸姣旇緝鍥伴毦鐨勩?/span>

 

C/C++鎵鏈夊鏉傜殑澹版槑緇撴瀯錛岄兘鏄敱鍚勭澹版槑宓屽鏋勬垚鐨勩傚浣曡В璇誨鏉傛寚閽堝0鏄庯紵鍙沖乏娉曞垯鏄竴涓緢钁楀悕銆佸緢鏈夋晥鐨勬柟娉曘備笉榪囷紝鍙沖乏娉曞垯鍏跺疄騫朵笉鏄?/span>C/C++鏍囧噯閲岄潰鐨勫唴瀹癸紝瀹冩槸浠?/span>C/C++鏍囧噯鐨勫0鏄庤瀹氫腑褰掔撼鍑烘潵鐨勬柟娉曘?/span>C/C++鏍囧噯鐨勫0鏄庤鍒欙紝鏄敤鏉ヨВ鍐沖浣曞垱寤哄0鏄庣殑錛岃屽彸宸︽硶鍒欐槸鐢ㄦ潵瑙e喅濡備綍杈╄瘑涓涓0鏄庣殑錛屼粠宓屽鐨勮搴︾湅錛屼袱鑰呭彲浠ヨ鏄竴涓浉鍙嶇殑榪囩▼銆傚彸宸︽硶鍒欑殑鑻辨枃鍘熸枃鏄繖鏍瘋鐨勶細(xì)

 

The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should be reversed. Once everything in the parentheses has been parsed, jump out of it. Continue till the whole declaration has been parsed.

 

 

榪欐鑻辨枃鐨勭炕璇戝涓嬶細(xì)

 

鍙沖乏娉曞垯錛氶鍏堜粠鏈閲岄潰鐨勫渾鎷彿鐪嬭搗錛岀劧鍚庡線鍙崇湅錛屽啀寰宸︾湅銆傛瘡褰撻亣鍒板渾鎷彿鏃訛紝灝卞簲璇ユ帀杞槄璇繪柟鍚戙備竴鏃﹁В鏋愬畬鍦嗘嫭鍙烽噷闈㈡墍鏈夌殑涓滆タ錛屽氨璺沖嚭鍦嗘嫭鍙楓傞噸澶嶈繖涓繃紼嬬洿鍒版暣涓0鏄庤В鏋愬畬姣曘?/span>

 

    絎旇呰瀵硅繖涓硶鍒欒繘琛屼竴涓皬灝忕殑淇錛屽簲璇ユ槸浠庢湭瀹氫箟鐨勬爣璇嗙寮濮嬮槄璇伙紝鑰屼笉鏄粠鎷彿璇昏搗錛屼箣鎵浠ユ槸鏈畾涔夌殑鏍囪瘑絎︼紝鏄洜涓轟竴涓0鏄庨噷闈㈠彲鑳芥湁澶氫釜鏍囪瘑絎︼紝浣嗘湭瀹氫箟鐨勬爣璇嗙鍙細(xì)鏈変竴涓?/span>

 

    鐜板湪閫氳繃涓浜涗緥瀛愭潵璁ㄨ鍙沖乏娉曞垯鐨勫簲鐢紝鍏堜粠鏈綆鍗曠殑寮濮嬶紝閫愭鍔犳繁錛?/span>

 

int (*func)(int *p);

 

棣栧厛鎵懼埌閭d釜鏈畾涔夌殑鏍囪瘑絎︼紝灝辨槸func錛屽畠鐨勫闈㈡湁涓瀵瑰渾鎷彿錛岃屼笖宸﹁竟鏄竴涓?/span>*鍙鳳紝榪欒鏄?/span>func鏄竴涓寚閽堬紝鐒跺悗璺沖嚭榪欎釜鍦嗘嫭鍙鳳紝鍏堢湅鍙寵竟錛屼篃鏄竴涓渾鎷彿錛岃繖璇存槑(*func)鏄竴涓嚱鏁幫紝鑰?/span>func鏄竴涓寚鍚戣繖綾誨嚱鏁扮殑鎸囬拡錛屽氨鏄竴涓嚱鏁版寚閽堬紝榪欑被鍑芥暟鍏鋒湁int*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊肩被鍨嬫槸int銆?/span>

 

int (*func)(int *p, int (*f)(int*));

 

func琚竴瀵規(guī)嫭鍙峰寘鍚紝涓斿乏杈規(guī)湁涓涓?/span>*鍙鳳紝璇存槑func鏄竴涓寚閽堬紝璺沖嚭鎷彿錛屽彸杈逛篃鏈変釜鎷彿錛岄偅涔?/span>func鏄竴涓寚鍚戝嚱鏁扮殑鎸囬拡錛岃繖綾誨嚱鏁板叿鏈?/span>int *鍜?/span>int (*)(int*)榪欐牱鐨勫艦鍙傦紝榪斿洖鍊間負(fù)int綾誨瀷銆傚啀鏉ョ湅涓鐪?/span>func鐨勫艦鍙?/span>int (*f)(int*)錛岀被浼煎墠闈㈢殑瑙i噴錛?/span>f涔熸槸涓涓嚱鏁版寚閽堬紝鎸囧悜鐨勫嚱鏁板叿鏈?/span>int*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊間負(fù)int銆?/span>

 

int (*func[5])(int *p);

 

func鍙寵竟鏄竴涓?/span>[]榪愮畻絎︼紝璇存槑func鏄竴涓叿鏈?/span>5涓厓绱犵殑鏁扮粍錛?/span>func鐨勫乏杈規(guī)湁涓涓?/span>*錛岃鏄?/span>func鐨勫厓绱犳槸鎸囬拡錛岃娉ㄦ剰榪欓噷鐨?/span>*涓嶆槸淇グfunc鐨勶紝鑰屾槸淇グfunc[5]鐨勶紝鍘熷洜鏄?/span>[]榪愮畻絎︿紭鍏堢駭姣?/span>*楂橈紝func鍏堣窡[]緇撳悎錛屽洜姝?/span>*淇グ鐨勬槸func[5]銆傝煩鍑鴻繖涓嫭鍙鳳紝鐪嬪彸杈癸紝涔熸槸涓瀵瑰渾鎷彿錛岃鏄?/span>func鏁扮粍鐨勫厓绱犳槸鍑芥暟綾誨瀷鐨勬寚閽堬紝瀹冩墍鎸囧悜鐨勫嚱鏁板叿鏈?/span>int*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊肩被鍨嬩負(fù)int銆?/span>

 

 

int (*(*func)[5])(int *p);

 

func琚竴涓渾鎷彿鍖呭惈錛屽乏杈瑰張鏈変竴涓?/span>*錛岄偅涔?/span>func鏄竴涓寚閽堬紝璺沖嚭鎷彿錛屽彸杈規(guī)槸涓涓?/span>[]榪愮畻絎﹀彿錛岃鏄?/span>func鏄竴涓寚鍚戞暟緇勭殑鎸囬拡錛岀幇鍦ㄥ線宸︾湅錛屽乏杈規(guī)湁涓涓?/span>*鍙鳳紝璇存槑榪欎釜鏁扮粍鐨勫厓绱犳槸鎸囬拡錛屽啀璺沖嚭鎷彿錛屽彸杈瑰張鏈変竴涓嫭鍙鳳紝璇存槑榪欎釜鏁扮粍鐨勫厓绱犳槸鎸囧悜鍑芥暟鐨勬寚閽堛傛葷粨涓涓嬶紝灝辨槸錛?/span>func鏄竴涓寚鍚戞暟緇勭殑鎸囬拡錛岃繖涓暟緇勭殑鍏冪礌鏄嚱鏁版寚閽堬紝榪欎簺鎸囬拡鎸囧悜鍏鋒湁int*褰㈠弬錛岃繑鍥炲間負(fù)int綾誨瀷鐨勫嚱鏁般?/span>

 

int (*(*func)(int *p))[5];

 

func鏄竴涓嚱鏁版寚閽堬紝榪欑被鍑芥暟鍏鋒湁int*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊兼槸鎸囧悜鏁扮粍鐨勬寚閽堬紝鎵鎸囧悜鐨勬暟緇勭殑鍏冪礌鏄叿鏈?/span>5涓?/span>int鍏冪礌鐨勬暟緇勩?/span>

 

瑕佹敞鎰忔湁浜涘鏉傛寚閽堝0鏄庢槸闈炴硶鐨勶紝渚嬪錛?/span>

 

int func(void) [5];

 

func鏄竴涓繑鍥炲間負(fù)鍏鋒湁5涓?/span>int鍏冪礌鐨勬暟緇勭殑鍑芥暟銆備絾C璇█鐨勫嚱鏁拌繑鍥炲間笉鑳戒負(fù)鏁扮粍錛岃繖鏄洜涓哄鏋滃厑璁稿嚱鏁拌繑鍥炲間負(fù)鏁扮粍錛岄偅涔堟帴鏀惰繖涓暟緇勭殑鍐呭鐨勪笢瑗匡紝涔熷繀欏繪槸涓涓暟緇勶紝浣?/span>C/C++璇█鐨勬暟緇勫悕鏄竴涓笉鍙慨鏀圭殑宸﹀鹼紝瀹冧笉鑳界洿鎺ヨ鍙︿竴涓暟緇勭殑鍐呭淇敼錛屽洜姝ゅ嚱鏁拌繑鍥炲間笉鑳戒負(fù)鏁扮粍銆?/span>

 

int func[5](void);

 

func鏄竴涓叿鏈?/span>5涓厓绱犵殑鏁扮粍錛岃繖涓暟緇勭殑鍏冪礌閮芥槸鍑芥暟銆傝繖涔熸槸闈炴硶鐨勶紝鍥犱負(fù)鏁扮粍鐨勫厓绱犲繀欏繪槸瀵硅薄錛屼絾鍑芥暟涓嶆槸瀵硅薄錛屼笉鑳戒綔涓烘暟緇勭殑鍏冪礌銆?/span>

 

瀹為檯緙栫▼褰撲腑錛岄渶瑕佸0鏄庝竴涓鏉傛寚閽堟椂錛屽鏋滄妸鏁翠釜澹版槑鍐欐垚涓婇潰鎵紺鴻繖浜涘艦寮忥紝灝嗗鍙鎬у甫鏉ヤ竴瀹氱殑鎹熷錛屽簲璇ョ敤typedef鏉ュ澹版槑閫愬眰鍒嗚В錛屽寮哄彲璇?/span>鎬с?/span>

 

typedef鏄竴縐嶅0鏄庯紝浣嗗畠澹版槑鐨勪笉鏄彉閲忥紝涔熸病鏈夊垱寤烘柊綾誨瀷錛岃屾槸鏌愮綾誨瀷鐨勫埆鍚嶃?span style="margin: 0px; padding: 0px;">typedef鏈夊緢澶х殑鐢ㄩ旓紝瀵逛竴涓鏉傚0鏄庤繘琛屽垎瑙d互澧炲己鍙鎬ф槸鍏朵綔鐢ㄤ箣涓銆?/span>渚嬪瀵逛簬澹版槑錛?/span>

 

int (*(*func)(int *p))[5];

 

鍙互榪欐牱鍒嗚В錛?/span>

 

typedef  int (*PARA)[5];

typedef PARA (*func)(int *);

 

榪欐牱灝卞鏄撶湅寰楀浜嗐?/span>

 

typedef鐨勫彟涓涓綔鐢紝鏄綔涓哄熀浜庡璞$紪紼嬬殑楂樺眰鎶借薄鎵嬫銆傚湪ADT涓紝瀹冨彲浠ョ敤鏉ュ湪C/C++鍜岀幇瀹炰笘鐣岀殑鐗╀歡闂村緩绔嬪叧鑱旓紝灝嗚繖浜涚墿浠舵娊璞℃垚C/C++鐨勭被鍨嬬郴緇熴傚湪璁捐ADT鐨勬椂鍊欙紝鎴戜滑甯稿父澹版槑鏌愪釜鎸囬拡鐨勫埆鍚嶏紝渚嬪錛?/span>

 

typedef struct node * list;

 

浠?/span>ADT鐨勮搴︾湅錛岃繖涓0鏄庢槸鍐嶈嚜鐒朵笉榪囩殑浜嬫儏錛屽彲浠ョ敤list鏉ュ畾涔変竴涓垪琛ㄣ備絾浠?/span>C/C++璇硶鐨勮搴︽潵鐪嬶紝瀹冨叾瀹炴槸涓嶇鍚?/span>C/C++澹版槑璇硶鐨勯昏緫鐨勶紝瀹冩毚鍔涘湴灝嗘寚閽堝0鏄庣浠庢寚閽堝0鏄庡櫒涓垎紱誨嚭鏉ワ紝榪欎細(xì)閫犳垚涓浜涘紓浜庝漢浠槄璇諱範(fàn)鎯殑鐜拌薄錛岃冭檻涓嬮潰浠g爜錛?/span>

 

const struct node *p1;

typedef struct node *list;

const list p2;

 

p1綾誨瀷鏄?/span>const struct node*錛岄偅涔?/span>p2鍛紵濡傛灉浣犱互涓哄氨鏄妸list綆鍗?#8220;浠e叆”p2錛岀劧鍚庡緱鍑?/span>p2綾誨瀷涔熸槸const struct node*鐨勭粨鏋滐紝灝卞ぇ閿欑壒閿欎簡銆?/span>p2鐨勭被鍨嬪叾瀹炴槸struct node * const p2錛岄偅涓?/span>const闄愬畾鐨勬槸p2錛屼笉鏄?/span>node銆傞犳垚榪欎竴濂囧紓鐜拌薄鐨勫師鍥犳槸鎸囬拡澹版槑鍣ㄨ鍒嗗壊錛屾爣鍑嗕腑瑙勫畾錛?/span>

 

6.7.5.1 Pointer declarators

 

Semantics

 

 If in the declaration ‘‘T D1’, D1 has the form

 

* type-qualifier-listopt D

 

and the type specified for ident in the declaration ‘‘T D’’ is

 

‘‘derived-declarator-type-list T’’

 

then the type specified for ident is

 

‘‘derived-declarator-type-list type-qualifier-list pointer to T’’

 

For each type qualifier in the list, ident is a so-qualified pointer.

 

鎸囬拡鐨勫0鏄庡櫒鐢辨寚閽堝0鏄庣*銆佸彲閫夌殑綾誨瀷闄愬畾璇?/span>type-qualifier-listopt鍜屾爣璇嗙D緇勬垚錛岃繖涓夎呭湪閫昏緫涓婃槸涓涓暣浣擄紝鏋勬垚涓涓畬鏁寸殑鎸囬拡澹版槑鍣ㄣ傝繖涔熸槸澶氫釜鍙橀噺鍚屽垪瀹氫箟鏃舵寚閽堝0鏄庣蹇呴』绱ц窡鏍囪瘑絎︾殑鍘熷洜錛屼緥濡傦細(xì)

 

int *p, q, *k;

 

p鍜?/span>k閮芥槸鎸囬拡錛屼絾q涓嶆槸錛岃繖鏄洜涓?/span>*p銆?/span>*k鏄竴涓暣浣撴寚閽堝0鏄庡櫒錛屼互琛ㄧず澹版槑鐨勬槸涓涓寚閽堛傜紪璇戝櫒浼?xì)鎶婃寚閽堝0鏄幗W﹀乏杈圭殑綾誨瀷鍖呮嫭鍏墮檺瀹氳瘝浣滀負(fù)鎸囬拡鎸囧悜鐨勫疄浣撶殑綾誨瀷錛屽彸杈圭殑闄愬畾璇嶉檺瀹氳澹版槑鐨勬爣璇嗙銆備絾鐜板湪typedef struct node *list紜敓鐢熸妸*浠庢暣涓寚閽堝0鏄庡櫒涓垎紱誨嚭鏉ワ紝緙栬瘧鍣ㄦ壘涓嶅埌*錛屼細(xì)璁や負(fù)const list p2涓殑const鏄檺瀹?/span>p2鐨勶紝姝e洜濡傛錛?/span>p2鐨勭被鍨嬫槸node * const鑰屼笉鏄?/span>const node*銆?/span>

 

铏界劧typedef struct node* list涓嶇鍚堝0鏄庤娉曠殑閫昏緫錛屼絾鍩轟簬typedef鍦?/span>ADT涓殑閲嶈浣滅敤浠ュ強(qiáng)淇℃伅闅愯棌鐨勮姹傦紝鎴戜滑搴旇璁╃敤鎴瘋繖鏍蜂嬌鐢?/span>list A錛岃屼笉鏄?/span>list *A錛屽洜姝ゅ湪ADT鐨勮璁′腑浠嶅簲浣跨敤涓婅堪typedef璇硶錛屼絾闇瑕佹敞鎰忓叾甯︽潵鐨勪笉鍒╁獎鍝嶃?/span>



sheng 2016-04-14 13:49 鍙戣〃璇勮
]]>
鏌旀ф暟緇勭粨鏋勬垚鍛?/title><link>http://m.shnenglu.com/cppopp/archive/2016/04/14/213275.html</link><dc:creator>sheng</dc:creator><author>sheng</author><pubDate>Thu, 14 Apr 2016 03:14:00 GMT</pubDate><guid>http://m.shnenglu.com/cppopp/archive/2016/04/14/213275.html</guid><wfw:comment>http://m.shnenglu.com/cppopp/comments/213275.html</wfw:comment><comments>http://m.shnenglu.com/cppopp/archive/2016/04/14/213275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppopp/comments/commentRss/213275.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppopp/services/trackbacks/213275.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C99涓紝緇撴瀯涓殑鏈鍚庝竴涓厓绱犲厑璁告槸鏈煡澶у皬鐨勬暟緇勶紝榪欏氨鍙仛鏌旀ф暟緇勬垚鍛橈紝浣嗙粨鏋勪腑鐨勬煍鎬ф暟緇勬垚鍛樺墠闈㈠繀欏昏嚦灝戜竴涓叾 浠栨垚鍛樸傛煍鎬ф暟緇勬垚鍛樺厑璁哥粨鏋勪腑鍖呭惈涓涓ぇ灝忓彲鍙樼殑鏁扮粍銆俿izeof榪斿洖鐨勮繖縐嶇粨鏋勫ぇ灝忎笉鍖呮嫭鏌旀ф暟緇勭殑鍐呭瓨銆傚寘鍚煍鎬ф暟緇勬垚鍛樼殑緇撴瀯鐢╩alloc ()鍑芥暟榪涜鍐呭瓨鐨勫姩鎬佸垎閰嶏紝騫朵笖鍒嗛厤鐨勫唴瀛樺簲璇ュぇ浜庣粨鏋勭殑澶у皬錛屼互閫傚簲鏌旀ф暟緇勭殑棰勬湡澶у皬銆傘?nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C璇█澶у叏錛?#8220;鏌旀ф暟緇勬垚鍛?#8221;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">銆愭煍鎬ф暟緇勭粨鏋勬垚鍛?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">銆銆C99涓紝緇撴瀯涓殑鏈鍚庝竴涓厓绱犲厑璁告槸鏈煡澶у皬鐨勬暟緇勶紝榪欏氨鍙仛鏌旀ф暟緇勬垚鍛橈紝浣嗙粨鏋勪腑鐨勬煍鎬ф暟緇勬垚鍛樺墠闈㈠繀欏昏嚦灝戜竴涓叾 浠栨垚鍛樸傛煍鎬ф暟緇勬垚鍛樺厑璁哥粨鏋勪腑鍖呭惈涓涓ぇ灝忓彲鍙樼殑鏁扮粍銆俿izeof榪斿洖鐨勮繖縐嶇粨鏋勫ぇ灝忎笉鍖呮嫭鏌旀ф暟緇勭殑鍐呭瓨銆傚寘鍚煍鎬ф暟緇勬垚鍛樼殑緇撴瀯鐢╩alloc ()鍑芥暟榪涜鍐呭瓨鐨勫姩鎬佸垎閰嶏紝騫朵笖鍒嗛厤鐨勫唴瀛樺簲璇ュぇ浜庣粨鏋勭殑澶у皬錛屼互閫傚簲鏌旀ф暟緇勭殑棰勬湡澶у皬銆傘?nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C璇█澶у叏錛?#8220;鏌旀ф暟緇勬垚鍛?#8221;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鐪嬬湅 C99 鏍囧噯涓?鐏墊椿鏁扮粍鎴愬憳錛?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">緇撴瀯浣撳彉闀跨殑濡欑敤——0涓厓绱犵殑鏁扮粍</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鏈夋椂鎴戜滑闇瑕佷駭鐢熶竴涓粨鏋勪綋錛屽疄鐜頒簡涓縐嶅彲鍙橀暱搴︾殑緇撴瀯銆傚浣曟潵瀹炵幇鍛紵</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鐪嬭繖涓粨鏋勪綋鐨勫畾涔夛細(xì)</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">typedef struct st_type</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">{</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">int nCnt;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">int item[0];</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">}type_a;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">錛堟湁浜涚紪璇戝櫒浼?xì)鎶ラ敊鏃犳硶缂栬瘧鍙互鏀规垚锛?xì)錛?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">typedef struct st_type</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">{</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">int nCnt;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">int item[];</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">}type_a;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">榪欐牱鎴戜滑灝卞彲浠ュ畾涔変竴涓彲鍙橀暱鐨勭粨鏋勶紝鐢╯izeof(type_a)寰楀埌鐨勫彧鏈?錛屽氨鏄痵izeof(nCnt)=sizeof(int)閭?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">涓?涓厓绱犵殑鏁扮粍娌℃湁鍗犵敤絀洪棿錛岃屽悗鎴戜滑鍙互榪涜鍙橀暱鎿嶄綔浜嗐?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C璇█鐗堬細(xì)</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">type_a *p = (type_a*)malloc(sizeof(type_a)+100*sizeof(int));</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C++璇█鐗?</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">type_a *p = (type_a*)new char[sizeof(type_a)+100*sizeof(int)];</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">榪欐牱鎴戜滑灝變駭鐢熶簡涓涓暱涓?00鐨則ype_a綾誨瀷鐨勪笢瑗跨敤p->item[n]灝辮兘綆鍗曞湴璁塊棶鍙彉闀垮厓绱狅紝鍘熺悊鍗佸垎綆鍗?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">錛屽垎閰嶄簡姣攕izeof(type_a)澶氱殑鍐呭瓨鍚巌nt item[];灝辨湁浜嗗叾鎰忎箟浜嗭紝瀹冩寚鍚戠殑鏄痠nt nCnt;鍚庨潰鐨勫唴瀹癸紝鏄病</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鏈夊唴瀛橀渶瑕佺殑錛岃屽湪鍒嗛厤鏃跺鍒嗛厤鐨勫唴瀛樺氨鍙互鐢卞叾鏉ユ搷鎺э紝鏄釜鍗佸垎濂界敤鐨勬妧宸с?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鑰岄噴鏀懼悓鏍風(fēng)畝鍗曪細(xì)</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C璇█鐗堬細(xì)</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">free(p);</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">C++璇█鐗堬細(xì)</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">delete []p;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鍏跺疄榪欎釜鍙伒媧繪暟緇勬垚鍛?fleible array member)C89涓嶆敮鎸佽繖縐嶄笢瑗匡紝C99鎶婂畠浣滀負(fù)涓縐嶇壒渚嬪姞鍏ヤ簡鏍囧噯銆備絾</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鏄紝C99鎵鏀寔鐨勬槸incomplete type錛岃屼笉鏄痾ero array錛屽艦鍚宨nt item[0];榪欑褰㈠紡鏄潪娉曠殑錛孋99鏀寔鐨?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">褰㈠紡鏄艦鍚宨nt item[];鍙笉榪囨湁浜涚紪璇戝櫒鎶奿nt item[0];浣滀負(fù)闈炴爣鍑嗘墿灞曟潵鏀寔錛岃屼笖鍦–99鍙戝竷涔嬪墠宸茬粡鏈?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">浜嗚繖縐嶉潪鏍囧噯鎵╁睍浜嗭紝C99鍙戝竷涔嬪悗錛屾湁浜涚紪璇戝櫒鎶婁袱鑰呭悎鑰屼負(fù)涓銆?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">涓嬮潰鏄疌99涓殑鐩稿叧鍐呭錛?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">6.7.2.1 Structure and union specifiers</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">As a special case, the last element of a structure with more than one named member may have </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">an incomplete array type; this is called a flexible array member. With two exceptions, the </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">flexible array member is ignored. First, the size of the structure shall be equal to the offset </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">of the last element of an otherwise identical structure that replaces the flexible array member </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">with an array of unspecified length.106) Second, when a . (or ->) operator has a left operand </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">that is (a pointer to) a structure with a flexible array member and the right operand names that </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">member, it behaves as if that member were replaced with the longest array (with the same element </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">type) that would not make the structure larger than the object being accessed; the offset of the </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">array shall remain that of the flexible array member, even if this would differ from that of the </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">replacement array. If this array would have no elements, it behaves as if it had one element but </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">the behavior is undefined if any attempt is made to access that element or to generate a pointer </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">one past it.</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">渚嬪鍦╒C++6閲屼嬌鐢ㄤ袱鑰呬箣涓閮借兘閫氳繃緙栬瘧騫朵笖瀹屾垚鎿嶄綔錛岃屼細(xì)浜х敓warning C4200: nonstandard extension </span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">used : zero-sized array in struct/union鐨勮鍛婃秷鎭?/span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">鑰屽湪DEVCPP閲屼袱鑰呭悓鏍峰彲浠ヤ嬌鐢紝騫朵笖涓嶄細(xì)鏈夎鍛婃秷鎭?/span><img src ="http://m.shnenglu.com/cppopp/aggbug/213275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppopp/" target="_blank">sheng</a> 2016-04-14 11:14 <a href="http://m.shnenglu.com/cppopp/archive/2016/04/14/213275.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍊煎緱鎺ㄨ崘鐨凜/C++妗嗘灦鍜屽簱http://m.shnenglu.com/cppopp/archive/2016/04/14/213270.htmlshengshengThu, 14 Apr 2016 02:03:00 GMThttp://m.shnenglu.com/cppopp/archive/2016/04/14/213270.htmlhttp://m.shnenglu.com/cppopp/comments/213270.htmlhttp://m.shnenglu.com/cppopp/archive/2016/04/14/213270.html#Feedback0http://m.shnenglu.com/cppopp/comments/commentRss/213270.htmlhttp://m.shnenglu.com/cppopp/services/trackbacks/213270.html闃呰鍏ㄦ枃

sheng 2016-04-14 10:03 鍙戣〃璇勮
]]>
澶辮惤鐨凜璇█緇撴瀯浣撳皝瑁呰壓鏈?/title><link>http://m.shnenglu.com/cppopp/archive/2016/04/14/213268.html</link><dc:creator>sheng</dc:creator><author>sheng</author><pubDate>Thu, 14 Apr 2016 01:10:00 GMT</pubDate><guid>http://m.shnenglu.com/cppopp/archive/2016/04/14/213268.html</guid><wfw:comment>http://m.shnenglu.com/cppopp/comments/213268.html</wfw:comment><comments>http://m.shnenglu.com/cppopp/archive/2016/04/14/213268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppopp/comments/commentRss/213268.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppopp/services/trackbacks/213268.html</trackback:ping><description><![CDATA[     鎽樿: Eric S. Raymond<esr@thyrsus.com>鐩綍1. 璋佽闃呰榪欑瘒鏂囩珷2. 鎴戜負(fù)浠涔堝啓榪欑瘒鏂囩珷3.瀵歸綈瑕佹眰4.濉厖5.緇撴瀯浣撳榻愬強(qiáng)濉厖6.緇撴瀯浣撻噸鎺掑簭7.闅句互澶勭悊鐨勬爣閲忕殑鎯呭喌8.鍙鎬у拰緙撳瓨灞閮ㄦ?.鍏朵粬灝佽鐨勬妧鏈?0.宸ュ叿11.璇佹槑鍙?qiáng)渚嬪?2.鐗堟湰灞ュ巻 1. 璋佽闃呰榪欑瘒鏂囩珷鏈枃鏄叧浜庡墛鍑廋璇█紼嬪簭鍐呭瓨鍗犵敤絀洪棿鐨勪竴欏規(guī)妧鏈?#8212;—涓轟簡鍑?..  <a href='http://m.shnenglu.com/cppopp/archive/2016/04/14/213268.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/cppopp/aggbug/213268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppopp/" target="_blank">sheng</a> 2016-04-14 09:10 <a href="http://m.shnenglu.com/cppopp/archive/2016/04/14/213268.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浠庡疄鐜拌楗拌呮ā寮忎腑鎬濊僀++鎸囬拡鍜屽紩鐢ㄧ殑閫夋嫨(杞?http://m.shnenglu.com/cppopp/archive/2013/04/05/199118.htmlshengshengFri, 05 Apr 2013 03:27:00 GMThttp://m.shnenglu.com/cppopp/archive/2013/04/05/199118.htmlhttp://m.shnenglu.com/cppopp/comments/199118.htmlhttp://m.shnenglu.com/cppopp/archive/2013/04/05/199118.html#Feedback0http://m.shnenglu.com/cppopp/comments/commentRss/199118.htmlhttp://m.shnenglu.com/cppopp/services/trackbacks/199118.html

浠庡疄鐜拌楗拌呮ā寮忎腑鎬濊僀++鎸囬拡鍜屽紩鐢ㄧ殑閫夋嫨

 

鏈榪戝湪鐪嬭璁℃ā寮忕殑鍐呭錛屽伓鐒墮棿鎵嬬棐灝卞啓浜嗕竴涓?#8220;瑁呴グ鑰?#8221;妯″紡鐨勪竴涓疄渚嬨傝瀹炰緥鏉ユ簮浜?/span>椋庨洩娑熸吉鐨勫崥瀹紝鎴戝瀹冨仛浜嗙畝鍖栥備綔涓轟竴涓粡鍏哥殑璁捐妯″紡錛屾湰韜茍娌℃湁澶瑕佽鐨勫唴瀹廣備絾鏄湪鎴戝皾璇曚嬌鐢?/span>C++鍘誨疄鐜拌繖涓ā寮忕殑瀹炰緥鐨勬椂鍊欙紝鍑虹幇浜嗕竴浜涚湅浼兼棤鍏崇揣瑕佷絾鏄嵈寮曚漢娣辨濈殑闂銆?/span>

棣栧厛錛屾垜鎯崇畝鍗曚粙緇嶄竴涓嬭繖涓疄渚嬬殑鍚箟銆傚疄渚嬬殑鐩殑鏄笇鏈涢氳繃瑁呴グ鍣ㄧ被瀵瑰凡鏈夌殑铔嬬硶綾昏繘琛岃楗拌ˉ鍏咃紝浜庢槸鎸夌収瑁呴グ鑰呮ā寮忕殑璁捐緇撴瀯錛屾湁綾諱技鍥?/span>1鐨勮璁$粨鏋勩?/span>

鍥?/span>1 瑁呴グ鑰呮ā寮?/span>

铔嬬硶綾誨拰瑁呴グ鍣ㄧ被閮界戶鎵夸簬涓涓叕鍏辯殑鍩虹被錛岃鍩虹被澹版槑浜嗕竴浜涘叕鍏辨帴鍙c傝繖閲岀畝鍗曠殑浣跨敤getName鏉ヨ繑鍥炲綋鍓嶈泲緋曠殑鍚嶇О錛岃岃楗板櫒綾誨彲浠ュ璇ヨ泲緋曠殑鍚嶇О榪涜淇敼琛ュ厖銆傚叿浣撶殑铔嬬硶綾婚兘鏈夎嚜宸辯殑鍚嶇О錛屾瘮濡?/span>CheeseCake榪斿洖鐨勬槸“濂舵補(bǔ)铔嬬硶”銆傚鏋滀嬌鐢ㄤ簡瑁呴グ鍣ㄧ被瀵硅綾昏繘琛岃楗扮殑璇濓紝榪斿洖鐨勫悕瀛楀氨鍙戠敓浜嗙殑鍙樺寲錛屾瘮濡?#8220;瑁呴グ浜嗚姳鐨?/strong>濂舵補(bǔ)铔嬬硶”錛岃繖姝f槸瑁呴グ鍣ㄧ被鐨勫姛鑳姐傚疄鐜拌繖涓姛鑳界殑鍏抽敭鍦ㄤ簬瑁呴グ鍣ㄥ叕鍏卞熀綾?/span>Decorator錛屽畠鍖呭惈浜嗕竴涓?/span>Cake綾誨瀷鐨勬垚鍛?/span>cake銆傚湪瀹氫箟瑁呴グ鍣ㄧ殑鏃跺欐垜浠彲浠ヤ紶閫掔粰瑁呴グ鍣ㄤ竴涓凡緇忓緩绔嬪ソ鐨勮泲緋曞璞★紝姣斿CheeseCake瀵硅薄銆傜敱浜?/span>CheeseCake鏄?/span>Cake鐨勫瓙綾伙紝鍥犳璇ュ璞″彲浠ヨcake鎴愬憳璁板綍涓嬫潵銆傜敱浜庡叿浣撶殑瑁呴グ鍣ㄧ戶鎵夸簬瑁呴グ鍣ㄥ熀綾?/span>Decorator錛屽洜姝や繚鎶や箻鍛?/span>cake鍙互琚湅鍒幫紝鍙堝洜涓鴻楗板櫒鏈韓涔熸槸緇ф壙涓?/span>Cake鐨勶紝鍥犳涔熸嫢鏈?/span>getName鐨勬帴鍙o紝榪欐牱鍦ㄨ楗板櫒綾誨唴鐢?/span>getName璋冪敤cake鐨?/span>getName鎺ュ彛騫舵坊鍔犻澶栫殑鎿嶄綔灝辮兘瀹屾垚瑁呴グ鐨勭洰鐨勩傚彟澶栵紝瑁呴グ鍣ㄦ湰韜篃鏄?/span>Cake鐨勫瓙綾伙紝鍥犳瑁呴グ鍚庣殑瑁呴グ鍣ㄧ被瀵硅薄鍚屾椂涔熸槸涓涓叿浣撶殑铔嬬硶瀵硅薄錛屽畠鍙互琚啀嬈¤楗幫紒榪欐牱瑁呴グ鍣ㄧ被鍙嶆槧鍦ㄦ垜浠剳嫻烽噷鐨勬儏澧冨氨鏄竴涓師鏈殑铔嬬硶瀵硅薄澶栬竟鍖呰9浜嗕竴灞傚眰瑁呴グ鍣ㄥ璞°?/span>

浠ヤ笂鐨勮鏄庡鏋滆繕涓嶅娓呮鐨勮瘽錛屼笅杈瑰睍紺哄叿浣撶殑瀹炵幇浠g爜銆傝繖閲屽氨闇瑕佽冭檻cake鎴愬憳鐨勭被鍨嬮棶棰橈紝涓鑸嬌鐢ㄦ寚閽堢被鍨嬪彲鑳芥洿絎﹀悎C++鐨勭紪紼嬩範(fàn)鎯傚洜涓轟嬌鐢ㄥ璞′笉浠呮秷鑰楃┖闂達(dá)紝榪樺湪姣忔鏋勯犲璞$殑鏃跺欒繘琛屽璞$殑澶嶅埗錛岃繖閮戒笉鏄垜浠効鎰忕湅鍒扮殑銆傚綋鐒訛紝浣跨敤寮曠敤鎴栬鏇村悎鐞嗭紝鍥犱負(fù)鎸夌収騫沖父鐨勭粡楠岋紝寰堝浣跨敤C++鎸囬拡鐨勫湴鏂歸兘鍙互鐢ㄥ紩鐢ㄤ唬鏇匡紝鏈変漢鐢氳嚦寤鴻澶氫嬌鐢ㄥ紩鐢ㄥ皯浣跨敤鎸囬拡錛堝綋鐒舵垜涔熸壙璁?/span>C++寮曠敤涔熸湁寰堝濂藉~錛?/span>銆備笉榪囷紝褰撲綘璇誨畬鏈枃鎴栬浣犲氨涓嶅ぇ榪欎箞璁や負(fù)浜嗐傞鍏堬紝鎴戜滑鐢?/span>Cake*pCake瀹炵幇榪欎釜瑁呴グ鍣ㄧ被鍐呯殑鎴愬憳錛屽厛鍏蜂綋浜嗚В涓涓嬭繖涓唬鐮佺殑鍏蜂綋鍐呭銆?/span>

鎸?Ctrl+C 澶嶅埗浠g爜
鎸?Ctrl+C 澶嶅埗浠g爜

浠庝唬鐮佷腑涓嶉毦鐪嬪嚭紼嬪簭鐨勮緭鍑虹粨鏋勫簲璇ユ槸“瑁呴グ榪囪姳鐨勮楗拌繃鑺辯殑濂舵補(bǔ)铔嬬硶”錛屼簨瀹炰篃鐨勭‘濡傛錛佷粠瑁呴グ鍣ㄧ殑浣跨敤鏍煎紡鏉ョ湅FlowerDecorator(&FlowerDecorator(&CheeseCake()))鍊掍篃涓嶈嚦浜庡崄鍒嗛夯鐑︺備絾鏄垰鎵嶈璁鴻繃錛屽鏋滆兘浣跨敤寮曠敤浠f浛浼?xì)璁镐細(xì)鏇?#8220;鑸掓湇”錛岃嚦灝戜笉鐢ㄤ紶閫掑弬鏁頒箣鍓嶈繕瑕佷嬌鐢?/span>&鑾峰彇涓涓嬪湴鍧浜?/span>~

鏃㈢劧濡傛錛屾垜浠妸鎴愬憳淇敼涓哄紩鐢ㄦ牸寮忕殑錛?/span>

澶嶅埗浠g爜
#pragma once
#include <iostream>
using namespace std;
//Cake鍏叡鍩虹被錛屾彁渚涜楗拌呭拰琚楗扮墿鐨勭粺涓鎺ュ彛
class Cake
{
public:
    virtual string getName()const=0;
};

//涓涓叿浣撶殑铔嬬硶
class CheeseCake:public Cake
{
public:
    virtual string getName()const
    {
        return string("濂舵補(bǔ)铔嬬硶");
    }
};

//涓涓楗拌呭熀綾?/span>
class Decorator:public Cake
{
protected:
    Cake &pCake;
public:
    Decorator(Cake&pc):pCake(pc){}
};

//涓涓叿浣撶殑瑁呴グ鍣?/span>
class FlowerDecorator:public Decorator
{
public:
    FlowerDecorator(Cake&pc):Decorator(pc){}
    virtual string getName()const
    {
        string decName="瑁呴グ榪囪姳鐨?/span>";
        decName+=pCake.getName();
        return decName;
    }
};
int main()
{
    cout<<
        FlowerDecorator(
            FlowerDecorator(
                CheeseCake()
        ))
        .getName().c_str()
        <<endl;
    return 0;
}
澶嶅埗浠g爜

淇敼鍚庣殑浠g爜鐪嬭搗鏉ョ殑紜洿“欏虹溂浜?#8221;銆傚洜涓鴻皟鐢ㄧ殑鏃跺欐垜浠笉鐢ㄥ啀鍐欓偅涓湅鐫鍒壄鐨勫彇鍦板潃榪愮畻絎︿簡錛岀劧鍚庢垜浠弧鎬嬈e枩鐨勬墽琛屼簡紼嬪簭錛岃緭鍑虹粨鏋滀負(fù)錛?#8220;瑁呴グ榪囪姳鐨勫ザ娌硅泲緋?#8221;錛佷綘鎴戠殑絎竴鍙嶅簲鍏垚鏄寰楀繕浜嗗淇グ涓嬈′簡錛屼絾鏄垜浠鐪熺殑媯鏌ヤ唬鐮侊紝鍙戠幇鐨勭‘涓鍒囬兘鏄鍚堥昏緫鐨?#8230;…

涓婅竟鍋氫簡榪欎箞澶氶摵鍨氨鏄負(fù)浜嗗紩鍑鴻繖涓鎬殑闂錛屾垜鍏跺疄涔熻璇ラ棶棰樺洶鎯戜簡寰堜箙銆傜◢鏈夌紪紼嬬粡楠岀殑浜洪兘浼?xì)璺燀t皟璇曡繖浜涙瀯閫犲嚱鏁扮殑鎵ц榪囩▼錛岀粨鏋滃彂鐜?/span>FlowerDecorator鍙鎵ц浜嗕竴嬈★紝鍥犳灝戣緭鍑轟竴嬈?#8220;瑁呴グ榪囪姳鐨?#8221;涓嶈凍涓哄銆備絾鏄綘鎴戣偗瀹氬ソ濂囦負(fù)浠涔堜細(xì)灝戣緭鍑轟竴嬈″憿錛?/span>

鍐嶆鍐嶆鐨勬鏌ヤ唬鐮併佽皟璇曘佽窡韙紝鎴栬浣犱細(xì)鍍忓彂鐜版柊澶ч檰涓鏍峰彂鐜頒簡涓涓殣钘忕殑闂錛氱浜屾鏋勯?/span>FlowerDecorator鏃惰皟鐢ㄧ殑鏄鍒舵瀯閫犲嚱鏁幫紝鑰屼笉鏄畾涔夊ソ鐨勬瀯閫犲嚱鏁幫紙铏界劧瀛愮被FlowerDecorator鏄?/span>Cake鐨勫瓙綾伙紝浣嗘槸緙栬瘧鍣ㄤ細(xì)鑷姩鏈浣?jīng)_尮閰嶅嚱鏁板弬鏁扮被鍨嬶級錛佺敱浜庡鍒舵瀯閫犲嚱鏁板煎師妯″師鏍風(fēng)殑鎷瘋礉鍑轟竴涓璞★紝鎵浠ュ彧鑳藉畬鎴愪竴嬈¤楗板櫒瑁呴グ銆傞潪甯稿畬緹庣殑瑙i噴錛佸洜姝ゆ垜浠彲浠ヨ嚜宸遍噸鍐欏鍒舵瀯閫犲嚱鏁版潵瀹屾垚鎴戜滑鐨勮楗板姛鑳斤紝榪欓噷鍏堝拷鐣ュ師鏈殑瀵硅薄澶嶅埗鍔熻兘浜嗐傜紪璇戝櫒涓烘垜浠敓鎴愮殑澶嶅埗鏋勯犲嚱鏁板簲璇ユ槸錛?/span>

FlowerDecorator(const FlowerDecorator&pc):Decorator(pc.pCake){}

鑰屾垜浠簲璇ュ皢鍙傛暟鐪嬩綔涓涓?/span>Cake瀵硅薄榪涜瑁呴グ錛屽洜姝や慨鏀逛負(fù)錛?/span>

FlowerDecorator(const FlowerDecorator&pc):Decorator(const_cast<FlowerDecorator&>(pc)){}

鍚屾牱錛岀敱浜庢瀯閫犲嚱鏁板垵濮嬪寲浜嗗熀綾伙紝鎵浠ュ熀綾葷殑澶嶅埗鏋勯犱篃闇瑕侀噸鍐欙細(xì)

Decorator(const Decorator&pc):pCake(const_cast<Decorator&>(pc)){}

鍗充嬌浼犻掔殑鍙傛暟鏄?/span>FlowerDecorator瀵硅薄鍜?/span>Cake涓?/span>Decorator涓嶆槸涓涓被鍨嬶紝浣嗘槸緙栬瘧鍣ㄦ垨璁?dāng)R粯璁ょ殑鍖歸厤緇ф壙灞傛鏈榪戠殑綾誨瀷錛佺劧鍚庢垜浠寜鐓ц繖鏍瘋姹傞噸鍐欎簡浠g爜錛屾墽琛屼簡紼嬪簭錛屽湪鏈熷緟緇撴灉鐨勯偅涓鍒葷湅鍒扮殑鏄?#8220;瑁呴グ榪囪姳鐨勫ザ娌硅泲緋?#8221;……鎴栬姝ゆ椂鐨勪綘閮戒細(xì)鎰熷埌鐏板績錛屼絾鏄綘榪樻槸渚濈劧鐨勫潥寮虹殑鎸変笅浜?/span>F5鍗曟璺熻釜錛岀粨鏋滀綘鍙戠幇鎷瘋礉鏋勯犲嚱鏁板茍娌℃湁琚皟鐢紒闅鵑亾浠ヤ笂鐨勫亣璁鵑兘閿欎簡鍚楋紵鎴戝彲浠ョ‘瀹氱殑鍛婅瘔璇昏咃紝鎴戜滑浠ヤ笂鐨勫亣璁鵑兘鏄紜殑銆?/span>

鏈緇堟垜涔熸槸娌℃湁鍔炴硶錛屽幓StackOverFlow涓婃眰鍔╋紝緇煎悎鍥炵瓟鑰呯殑璁ㄨ錛屾垜緇堜簬鎶婇棶棰樼殑鍘熷洜閿佸畾浜?#8212;—緙栬瘧鍣ㄤ紭鍖栵紒鎴戣寰楃敤涓涓渶綆鍗曠殑渚嬪瓙鏉ヨ鏄庤繖涓棶棰樺啀鍚堥備笉榪囦簡錛?/span>

澶嶅埗浠g爜
class A
{
public:
    A(int)
    {
        cout<<"鏋勯燶n";
    }
    A(const A&)
    {
        cout<<"鎷瘋礉\n";
    }
};

int main()
{
    A(0);
    cout<<"------------------------\n";
    A(A(0));
    cout<<"------------------------\n";
    A(A(A(0)));
    cout<<"------------------------\n";
    A(A(A(A(0))));
    cout<<"------------------------\n";
    A(A(A(A(A(0)))));
    cout<<"------------------------\n";
    return 0;
}
澶嶅埗浠g爜

榪欎釜綆鍗曠殑渚嬪瓙緇撴灉鎴栬澶у閮藉緢鏄庣櫧錛屼絾鏄綘浜茶嚜嫻嬭瘯涓涓嬪氨鍙兘瑕佹鐤戣嚜宸辯殑鍒ゆ柇鑳藉姏浜嗭紝紼嬪簭杈撳嚭錛?/span>

鏄笉鏄湁鐐逛笘鐣岃琚瑕嗙殑鎰熻錛熼渶瑕佸0鏄庝竴涓嬶紝榪欎釜鏄?/span>Visual Studio 2010涓嬬殑嫻嬭瘯緇撴灉錛屽洜涓鴻繖涓▼搴忕殑杈撳嚭鐨勭‘鍜岀紪璇戝櫒鐩稿叧錛佷負(fù)浜嗙‘璁ゆ垜鐢?/span>gcc-4.4.3嫻嬭瘯浜嗚孌典唬鐮侊紝杈撳嚭緇撴灉涓猴細(xì)

鐪嬫潵錛岃繕鏄?/span>gcc浼樺寲鐨勬瘮杈冨交搴曘傚洜姝ゆ垜浠彲浠ュ緱鍑虹粨璁猴紝綾諱技榪欑鏃犲悕瀵硅薄鐨勬瀯閫狅紙鏈夊悕鐨勬槸鎸夌収瑙勭煩鏉ョ殑錛夛紝璋冪敤澶氬皯嬈℃瀯閫犲嚱鏁拌鐪嬬紪璇戝櫒鐨?#8220;鑴炬皵”浜嗐傚埌榪欓噷錛屼笉鐭ラ亾浣犲寮曠敤鍙傛暟鐨勬劅瑙夊浣曪紵

璁ㄨ鍒拌繖錛屾垨璁告湁浜鴻鍜屾湰鏉ヨ璁ㄨ鐨勮瘽棰樼寰楀お榪滀簡銆傚叾瀹炲茍涓嶆槸錛屼經(jīng)瀹惰錛?#8220;浠婃棩涔嬫灉鐨嗘潵鑷槰鏃ヤ箣鍥?#8221;錛屼竴鍒囩殑涓鍒囬兘鏄敱浜庢垜浠嬌鐢ㄤ簡鏈互涓烘鏃犳?zhèn)侩姎勫紩鐢ㄥD嚧鐨勶紒濡傛灉浣跨敤鎸囬拡灝變笉鍙兘鍙戠敓鍜屾嫹璐濇瀯閫犲嚱鏁板啿紿佺殑闂錛屼篃涓嶄細(xì)瀵艱嚧緙栬瘧鍣ㄤ紭鍖栫殑闂錛佸洖瑙嗘湰鏂囧垰寮濮嬩婦鐨勪緥瀛愬拰璇ユ枃鐨勪富棰橈紝鎴栬鎴戜滑搴旇娓呮鏈夋椂鍊欑殑紜濂藉ソ鍖哄垎涓涓嬫寚閽堝拰寮曠敤鐨勫樊鍒簡錛屽綋鐒舵湰鏂囦篃鏄粠涓涓疄璺電殑渚嬪瓙涓幓鍙戠幇鍜屾寲鎺樿繖涓鐐廣?br />



sheng 2013-04-05 11:27 鍙戣〃璇勮
]]>
DLL涓紶閫扴TL鍙傛暟錛寁ector瀵硅薄浣滀負(fù)dll鍙傛暟浼犻掔瓑闂(杞?http://m.shnenglu.com/cppopp/archive/2013/03/01/198152.htmlshengshengFri, 01 Mar 2013 05:58:00 GMThttp://m.shnenglu.com/cppopp/archive/2013/03/01/198152.htmlhttp://m.shnenglu.com/cppopp/comments/198152.htmlhttp://m.shnenglu.com/cppopp/archive/2013/03/01/198152.html#Feedback0http://m.shnenglu.com/cppopp/comments/commentRss/198152.htmlhttp://m.shnenglu.com/cppopp/services/trackbacks/198152.html 


STL璺ㄥ鉤鍙拌皟鐢ㄤ細(xì)鍑虹幇寰堝寮傚父錛屼綘鍙互璇曡瘯.

STL浣跨敤妯℃澘鐢熸垚錛屽綋鎴戜滑浣跨敤妯℃澘鐨勬椂鍊欙紝姣忎竴涓狤XE錛屽拰DLL閮藉湪緙栬瘧鍣ㄤ駭鐢熶簡鑷繁鐨勪唬鐮侊紝瀵艱嚧妯℃澘鎵浣跨敤鐨勯潤鎬佹垚鍛樹笉鍚屾錛屾墍浠ュ嚭鐜版暟鎹紶閫掔殑鍚勭闂錛屼笅闈㈡槸璇︾粏瑙i噴銆?/strong>

鍘熷洜鍒嗘瀽錛?br style="margin: 0px; padding: 0px; " />涓鍙ヨ瘽-----濡傛灉浠諱綍STL綾諱嬌鐢ㄤ簡闈欐佸彉閲忥紙鏃犺鏄洿鎺ヨ繕鏄棿鎺ヤ嬌鐢級錛岄偅涔堝氨涓嶈鍐嶅啓鍑鴻法鎵ц鍗曞厓璁塊棶瀹冪殑浠g爜銆?nbsp;闄ら潪浣犺兘澶熺‘瀹氫袱涓姩鎬佸簱浣跨敤鐨勯兘鏄悓鏍風(fēng)殑STL瀹炵幇錛屾瘮濡傞兘浣跨敤VC鍚屼竴鐗堟湰鐨凷TL錛岀紪璇戦夐」涔熶竴鏍楓傚己鐑堝緩璁紝涓嶈鍦ㄥ姩鎬佸簱鎺ュ彛涓紶閫扴TL瀹瑰櫒錛侊紒

STL涓嶄竴瀹氫笉鑳藉湪DLL闂翠紶閫掞紝浣嗕綘蹇呴』褰誨簳鎼炴噦瀹冪殑鍐呴儴瀹炵幇錛屽茍鎳傚緱涓轟綍浼?xì)鍑洪棶棰樸?br style="margin: 0px; padding: 0px; " />寰蔣鐨勮В閲婏細(xì)
http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b172396
寰蔣緇欑殑瑙e喅鍔炴硶錛?br style="margin: 0px; padding: 0px; " />http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b168958

1銆佸井杞殑瑙i噴錛?br style="margin: 0px; padding: 0px; " />澶ч儴鍒咰++鏍囧噯搴撻噷鎻愪緵鐨勭被鐩存帴鎴栭棿鎺ュ湴浣跨敤浜嗛潤鎬佸彉閲忋傜敱浜庤繖浜涚被鏄氳繃妯℃澘鎵╁睍鑰屾潵鐨勶紝鍥犳姣忎釜鍙墽琛屾槧鍍忥紙閫氬父鏄?dll鎴?exe鏂囦歡錛夊氨浼?xì)瀛樺湪涓浠藉彧灞炰簬鑷繁鐨勩佺粰瀹氱被鐨勯潤鎬佹暟鎹垚鍛樸傚綋涓涓渶瑕佽闂繖浜涢潤鎬佹垚鍛樼殑綾繪柟娉曟墽琛屾椂錛屽畠浣跨敤鐨勬槸“榪欎釜鏂規(guī)硶鐨勪唬鐮佸綋鍓嶆墍鍦ㄧ殑閭d喚鍙墽琛屾槧鍍?#8221;閲岀殑闈欐佹垚鍛樺彉閲忋傜敱浜庝袱浠藉彲鎵ц鏄犲儚鍚勮嚜鐨勯潤鎬佹暟鎹垚鍛樺茍鏈悓姝ワ紝榪欎釜琛屼負(fù)灝卞彲鑳藉鑷磋闂繚渚嬶紝鎴栬呮暟鎹湅璧鋒潵浼間箮涓㈠け鎴栬鐮村潖浜嗐?br style="margin: 0px; padding: 0px; " />
鍙兘涓嶅お濂芥噦錛屾垜涓句釜渚嬪瓙錛氬亣濡傜被A<T>鏈変釜闈欐佸彉閲弇_s錛岄偅涔堝綋1.exe浣跨敤浜?.dll涓彁渚涚殑鏌愪釜A<int>瀵硅薄鏃訛紝鐢變簬妯℃澘鎵╁睍鏈哄埗錛?.exe鍜?.dll涓細(xì)鍒嗗埆瀛樺湪鑷繁鐨勪竴浠界被闈欐佸彉閲廇<int>.m_s銆?br style="margin: 0px; padding: 0px; " />榪欐牱錛屽亣濡?.exe涓粠2.dll涓彇寰椾簡涓涓殑綾籄<int>鐨勫疄渚嬪璞錛岄偅涔堝綋鍦?.exe涓洿鎺ヨ闂產(chǎn).m_s鏃訛紝鍏跺疄璁塊棶鐨勬槸 1.exe涓殑瀵瑰簲鎷瘋礉錛堟紜儏鍐靛簲璇ユ槸璁塊棶浜?.dll涓殑a.m_s錛夈傝繖鏍峰氨鍙兘瀵艱嚧闈炴硶璁塊棶銆佸簲褰撴敼鍙樼殑鏁版嵁娌℃湁鏀瑰彉銆佷笉搴旀敼鍙樼殑鏁版嵁琚敊璇湴鏇存敼絳夊紓甯告儏褰€?br style="margin: 0px; padding: 0px; " />
鍘熸枃錛?br style="margin: 0px; padding: 0px; " />Most classes in the Standard C++ Libraries use static data members directly or indirectly. Since these classes are generated through template instantiation, each executable image (usually with DLL or EXE file name extensions) will contain its own copy of the static data member for a given class. When a method of the class that requires the static data member is executed, it uses the static data member in the executable image in which the method code resides. Since the static data members in the executable images are not in sync, this action could result in an access violation or data may appear to be lost or corrupted.

1銆佷繚璇佽祫婧愮殑鍒嗛厤/鍒犻櫎鎿嶄綔瀵圭瓑騫跺浜庡悓涓涓墽琛屽崟鍏冿紱
   姣斿錛屽彲浠ユ妸榪欎簺鎿嶄綔錛堝寘鎷瀯閫?鏋愭瀯鍑芥暟銆佹煇浜涘鍣ㄨ嚜鍔ㄦ墿瀹箋榪欎釜闇瑕佺壒鍒敞鎰弣鏃剁殑鍐呭瓨鍐嶅垎閰嶇瓑錛夐殣钘忓埌鎺ュ彛鍑芥暟閲岄潰銆傛崲鍙ヨ瘽璇達(dá)細(xì)灝介噺涓嶈鐩存帴浠巇ll涓緭鍑簊tl瀵硅薄錛涘鏋滀竴瀹氳杈撳嚭錛岀粰瀹冨姞涓婁竴灞傚寘瑁咃紝鐒跺悗杈撳嚭榪欎釜鍖呰鎺ュ彛鑰屼笉鏄師濮嬫帴鍙c?br style="margin: 0px; padding: 0px; " />
2銆佷繚璇佹墍鏈夌殑鎵ц鍗曞厓浣跨敤鍚屾牱鐗堟湰鐨凷TL榪愯搴撱?br style="margin: 0px; padding: 0px; " />   姣斿錛屽叏閮ㄤ嬌鐢╮elease搴撴垨debug搴擄紝鍚﹀垯涓や釜鎵ц鍗曞厓鎵╁睍鍑烘潵鐨凷TL綾葷殑鍐呭瓨甯冨眬灝卞彲鑳戒細(xì)涓嶄竴鏍楓?br style="margin: 0px; padding: 0px; " />
鍙璁頒綇鍏抽敭灝辨槸錛?span style="margin: 0px; padding: 0px; ">濡傛灉浠諱綍STL綾諱嬌鐢ㄤ簡闈欐佸彉閲忥紙鏃犺鏄洿鎺ヨ繕鏄棿鎺ヤ嬌鐢級錛岄偅涔堝氨涓嶈鍐嶅啓鍑鴻法鎵ц鍗曞厓璁塊棶瀹冪殑浠g爜銆?br style="margin: 0px; padding: 0px; " />
瑙e喅鏂規(guī)硶錛?br style="margin: 0px; padding: 0px; " />1. 涓涓彲浠ヨ冭檻鐨勬柟妗?br style="margin: 0px; padding: 0px; " />姣斿鏈変袱涓姩鎬佸簱L1鍜孡2錛孡2闇瑕佷慨鏀筁1涓殑涓涓猰ap錛岄偅涔堟垜鍦↙1涓緗涓嬫帴鍙?br style="margin: 0px; padding: 0px; " />int modify_map(int key, int new_value);
濡傛灉闇瑕佹寚瀹?#8220;鏌愪竴涓猰ap”錛屽垯鍙互鑰冭檻瀹炵幇涓縐嶇被浼間簬鍙ユ焺鐨勬柟寮忥紝姣斿鍙互浼犻掍竴涓狣WORD
涓嶈繃榪欎釜DWORD鏀劇殑鏄竴涓湴鍧

閭d箞modify_map灝卞彲浠ヨ繖鏍峰疄鐜幫細(xì)
int modify_map(DWORD map_handle, int key, int new_value)
{
    std::map<int, int>& themap = *(std::map<int, int>*)map_handle;
    themap[key] = new_value;
}

map_handle鐨勫間篃棣栧厛鐢盠1“鍛婅瘔”L2:
DWORD get_map_handle();

L2鍙互榪欐牱璋冪敤:
DWORD h = get_map_handle();
modify_map(h, 1, 2);

2. 鍔犲叆涓涓澶栫殑灞傦紝灝卞彲浠ヨВ鍐抽棶棰樸傛墍浠ワ紝浣犻渶瑕佸皢浣犵殑Map鍖呰鍦╠ll鍐呴儴錛岃屼笉鏄瀹冨嚭鐜板湪鎺ュ彛褰撲腑銆傚姩鎬佸簱鐨勬帴鍙h秺綆鍗曡秺濂斤紝涓嶅ソ鍘諱紶澶繃澶嶆潅鐨勪笢涓滄槸鑷崇悊鍚嶈█錛氾級

 

鍦ㄥ姩鎬佽繛鎺ュ簱寮鍙戜腑瑕佺壒鍒敞鎰忓唴瀛樼殑鍒嗛厤涓庨噴鏀鵑棶棰橈紝紼嶄笉娉ㄦ剰錛屾瀬鍙兘閫犳垚鍐呭瓨娉勬紡錛屼粠鑰岃闂嚭閿欍備緥濡傚湪鏌怐LL涓瓨鍦ㄨ繖鏍蜂竴孌典唬鐮侊細(xì)

extent "C" __declspec(dllexport) 
void ExtractFileName( const std::string& path //!< Input path and filename.
, std::string& fname //!< Extracted filename with extension.
)
{
std::string::size_type startPos = path.find_last_of('\\');
fname.assign(path.begin() startPos 1, path.end() );
}

鍦―LL涓嬌鐢⊿TL瀵硅薄std::string錛屽茍涓斿湪鍏朵腑鏀瑰彉std::string鐨勫唴瀹癸紝鍗沖彂鐢熶簡鍐呭瓨鐨勯噸鍒嗛厤闂,鑻ュ湪EXE涓皟鐢ㄨ鍑芥暟浼?xì)鍑虹幇鍐呭瓨璁块棶闂銆?span style="margin: 0px; padding: 0px; color: #ff3333; ">涓昏鏄細(xì)鍥犱負(fù)DLL鍜孍XE鐨勫唴瀛樺垎閰嶆柟寮忎笉鍚岋紝DLL涓殑鍒嗛厤鐨勫唴瀛樹笉鑳藉湪EXE涓紜噴鏀炬帀銆?br style="margin: 0px; padding: 0px; " />
瑙e喅榪欎竴闂鐨勯斿緞濡備笅錛?br style="margin: 0px; padding: 0px; " />涓鑸儏鍐典笅錛氭瀯寤篋LL蹇呴』閬靛驚璋佸垎閰嶅氨鐢辮皝閲婃斁鐨?/span>鍘熷垯錛屼緥濡侰OM鐨勮В鍐蟲柟妗堬紙鍒╃敤寮曠敤璁℃暟錛夛紝瀵硅薄鐨勫垱寤猴紙QueryInterface錛変笌閲婃斁鍧囧湪COM緇勪歡鍐呴儴瀹屾垚銆傚湪綰疌 鐜涓嬶紝鍙互寰堝鏄撶殑瀹炵幇綾諱技鏂規(guī)銆?/p>


鍦ㄥ簲鐢⊿TL鐨勬儏鍐典笅錛屽緢闅句嬌鐢ㄤ笂榪版柟妗堟潵瑙e喅錛屽洜姝ゅ繀欏誨彟杈熻箠寰勶紝閫斿緞鏈変簩錛?br style="margin: 0px; padding: 0px; " />1銆佽嚜宸卞啓鍐呭瓨鍒嗛厤鍣ㄦ浛浠TL涓殑榛樿鍒嗛厤鍣ㄣ?br style="margin: 0px; padding: 0px; " />2銆佷嬌鐢⊿TLport鏇夸唬緋葷粺鐨勬爣鍑嗗簱銆?br style="margin: 0px; padding: 0px; " />
鍏跺疄錛屼笂榪伴棶棰樺湪VC7鍙?qiáng)浠ュ悗鐗堟湰涓Q屽凡寰楀埌瑙e喅錛屾敞鎰廌LL宸ョ▼鍜岃皟鐢ㄧ殑宸ョ▼涓瀹氳浣跨敤澶氱嚎紼婦LL搴擄紝灝變笉浼?xì)鍙戠敓鍐呭瓨璁块棶闂銆?/p>

 

 

涓涓緢濂囨殑闂錛欴LL涓嬌鐢╯td::string浣滀負(fù)鍙傛暟緇撴灉鍑洪敊

榪欐鏃墮棿,鍦ㄥ伐紼嬩腑灝嗕竴浜涘姛鑳藉皝瑁呮垚鍔ㄦ佸簱,闇瑕佷嬌鐢ㄥ姩鎬佸簱鎺ュ彛鐨勬椂鍊?浣跨敤浜?span style="margin: 0px; padding: 0px; ">STL鐨勪竴浜涚被鍨嬩綔涓哄弬鏁?

姣旀柟string,vector,list.浣嗘槸鍦ㄤ嬌鐢ㄦ帴鍙g殑鏃跺?
  1. class exportClass
  2. {
  3.      bool dll_funcation(string &str);
  4. };
澶嶅埗浠g爜
//涓婇潰榪欎釜綾誨彧鏄竴涓艦寮忥紝鍏蜂綋鍐呭涓嶅啓鍑烘潵浜?榪欎釜綾昏瀵煎嚭

褰撴垜鍦ㄤ嬌鐢ㄨ繖涓簱鐨勬椂鍊?榪欐牱鍐欎唬鐮?
  1. string str="":
  2. exportClass tmp;
  3. tmp.dll_function(str);
澶嶅埗浠g爜
榪欎釜鍑芥暟鑳芥垚鍔熻皟鐢?浣嗘槸鍦ㄥ嚱鏁伴噷闈細(xì)緇欒繖涓暟緇勯檮鍊?濡傛灉瀛楃涓插お闀?灝變細(xì)鍑洪敊.鍑芥暟璋冪敤鑳芥垚鍔?浣嗘槸涓鏃tr璧勬簮闇瑕侀噴鏀劇殑鏃跺?璧勬簮灝變笉鑳介噴鏀句簡,鎻愮ず閲婃斁浜嗛敊璇殑鍐呭瓨絀洪棿.

涓鐐逛竴鐐瑰彇鎺夎繖涓嚱鏁扮殑浠g爜.鏈鍚庡氨鍓╀笅

str="qadasdasdasdsafsafas";

榪樻槸鍑洪敊璇?

濡傛灉鏀規(guī)垚寰堢煭鐨勫瓧絎︿覆,灝變笉浼?xì)鍑洪敊璇?
鍦ㄨ繖涓椂鍊?鍙兘灝濊瘯璁や負(fù)鏄瓧絎︿覆鐨勭┖闂村お灝?br style="margin: 0px; padding: 0px; " />
鏈緇堟垜淇敼鎴愯繖鏍?閿欒娑堝け浜?甯屾湜閿欒鐪熺殑鏄繖涓紩璧風(fēng)殑
  1. string str="":

  2. str.resize(1000);

  3. exportClass tmp;

  4. tmp.dll_function(str);

 

浠婂ぉ鍐欑▼搴忕殑鏃跺欒緇欎竴涓ā鍧楃殑dll浼犻掍竴涓弬鏁幫紝鐢變簬鍙傛暟鏁伴噺鏄彲鍙樼殑錛屽洜姝よ璁℃垚浜唙ector<string>綾誨瀷錛屼絾璋冭瘯榪囩▼涓彂鐜板湪exe涓殑鍙傛暟浼犻掑埌dll涓殑鍑芥暟鍚庯紝vector鍙樻垚絀虹殑錛屾敼鎴愪紶寮曠敤綾誨瀷鍚庯紝vector绔熺劧鍙樺緱寰堝ぇ錛屽茍涓旀槸鏃犳剰涔夌殑鍙傛暟銆?/p>

瀵逛簬榪欎釜闂錛屼袱縐嶅姙娉曪細(xì)

1.浼犻抳ector鎸囬拡

2.浼犻抍onst vector<TYPE>銆?/p>

絀跺叾鍘熷洜錛?/p>

鏄洜涓簐ector鍦╡xe鍜宒ll涔嬮棿浼犻掔殑鏃跺欙紝鐢變簬鍦╠ll鍐呭彲鑳藉vector鎻掑叆鏁版嵁錛岃岃繖孌靛唴瀛樻槸鍦╠ll閲岄潰鍒嗛厤鐨勶紝exe鏃犳硶鐭ラ亾濡備綍閲婃斁鍐呭瓨錛屼粠鑰屽鑷撮棶棰樸傝屾敼鎴恈onst綾誨瀷鍚庯紝緙栬瘧鍣ㄤ究鐭ラ亾dll閲屼笉浼?xì)鏀瑰彉vector錛屼粠鑰屼笉浼?xì)鍑洪敊銆?/p>

鎴栬呭彲浠ヨ榪欐槸"cross-DLL problem."錛圱his problem crops up when an object is created using new in one dynamically linked library (DLL) but is deleted in a different DLL錛夌殑涓縐嶅惂銆?/p>

瀵逛簬STL錛屽湪DLL涓嬌鐢ㄧ殑鏃跺欙紝寰寰瀛樺湪榪欎簺闂錛屽湪緗戠粶涓婃悳闆嗕簡涓嬶紝榪欎簺閮芥槸瑕佸鉤鏃朵嬌鐢⊿TL鐨勬椂鍊欐敞鎰忕殑銆?/p>

***************************************************************************************************************

寮曠敤http://www.hellocpp.net/Articles/Article/714.aspx

褰搕emplate 閬亣鍒癲ynamic link 鏃跺? 寰堝鏃跺欏嵈鏄竴鍦烘伓姊?
鐜板湪鏉ヨ璇翠竴閮ㄥ垎鎴戝凡緇忕鍒拌繃鐨勯棶棰? 闂涓昏闆嗕腑鍦ㄥ唴瀛樺垎閰嶄笂.
1> 
      鎷縎TL鏉ヨ, 鑷繁鍐欐ā鏉跨殑鏃跺?寰堥毦鍏嶅氨鐢ㄥ埌stl. stl鐨勪唬鐮侀兘鍦ㄥご鏂囦歡閲? 閭d箞琛ㄧず鐫鍐呭瓨鍒嗛厤鐨勪唬鐮?鍙湁鍖呭惈浜嗗畠鐨刢pp 緙栬瘧鐨勬椂鍊欐墠浼?xì)琚啗_畾鏄嬌鐢ㄤ粈涔堟牱鐨勫唴瀛樺垎閰嶄唬鐮? 鑰冭檻涓涓? 褰撲綘澹版槑浜嗕竴涓獀ector<> . 騫舵妸榪欎釜vector<>浜ょ粰涓涓?dll閲岀殑浠g爜鏉ョ敤. 鐢ㄥ畬鍚? 鍦ㄤ綘鐨勭▼搴忛噷琚噴鏀句簡.    閭d箞濡傛灉浣?鍦╠ll閲屽線vector閲宨nsert浜嗕竴浜涗笢瑗? 閭d箞榪欎釜鏃跺檌nsert 鍙戠敓鐨勫唴瀛樺垎閰嶇殑浠g爜鏄睘浜巇ll鐨? 浣犱笉鐭ラ亾榪欎釜dll鐨勫唴瀛樺垎閰嶆槸浠涔? 鏄垎閰嶅湪鍝噷鐨? 鑰岃繖涓椂鍊?閲婃斁閭d績鐨勫姩浣滃嵈涓嶅湪dll閲?....鍚屾椂. 浣犵敋鑷蟲棤娉曚繚璇佺紪璇慸ll鐨勯偅涓浼欎嬌鐢ㄧ殑stl鐗堟湰鍜屼綘鏄畬鍏ㄤ竴鏍風(fēng)殑..>
      濡傛璇存潵, 紼嬪簭crash鎺夋槸澶╃粡鍦頒箟鐨?... 
      瀵圭瓥: 鍗冧竾鍒埆鎶婁綘鐨剆tl 瀹瑰櫒,妯℃澘瀹瑰櫒鍦?dll 闂翠紶鏉ヤ紶鍘?. 璁頒綇string涔熸槸....

2> 
     浣犲湪dll鐨勬煇涓被閲屽0鏄庝簡涓涓獀ector涔嬬被鐨勫鍣? 鑰屾病鏈夋樉寮忕殑鍐欒繖涓被鐨勬瀯閫犲拰鏋愭瀯鍑芥暟. 閭d箞闂鍙堟潵浜?
     浣犺繖涓被鑲畾鏈夋搷浣滆繖vector鐨勫嚱鏁? 閭d箞榪欎簺鍑芥暟浼?xì)璁﹙ecoter<>鐢熸垚浠g爜. 榪欎簺浠g爜鍦ㄨ繖涓猟ll閲岄兘鏄竴鑷寸殑. 浣嗘槸鍒繕浜?浣犳病鏈夊啓鏋愭瀯鍑芥暟...... 濡傛灉榪欎釜鏃跺? 鍒漢鍦ㄥ闈㈠0鏄庝簡涓涓繖鏍風(fēng)殑綾?鐒跺悗璋冪敤榪欎釜綾葷殑鍑芥暟鎿嶄綔浜嗚繖涓獀ector( 褰撶劧浣跨敤鑰呭茍涓嶇煡閬撲粈涔堟椂鍊欐搷浣滀簡vector) . 瀹冪敤瀹屼簡榪欎釜綾諱互鍚? 綾昏閲婃斁鎺変簡. 緙栬瘧鍣ㄥ緢璐熻矗鐨勪負(fù)瀹冪敓鎴愪簡涓浠芥瀽鏋勫嚱鏁扮殑浠g爜...... 鍚ソ浜?榪欎喚浠g爜騫朵笉鏄湪 dll閲?... . 浜嬫儏浜庢槸鍙堝拰1>閲岀殑涓鏍蜂簡.... crash ......(鍙兘榪樹細(xì)浼撮殢鐫榪瘋尗.....)
     瀵圭瓥: 璁板緱dll閲屾瘡涓被,鍝曞紡鏋勯犳瀽鏋勫嚱鏁板紡絀虹殑. 涔熻鍐欏埌cpp閲屽幓. 浠涔堥兘涓嶅啓涔熷紡寰堢碂緋曠殑.....鍚屾椂,鏇磋鎶婁換浣曞拰鍐呭瓨鎿嶄綔鏈夊叧鐨勫嚱鏁板啓鍒?.cpp 閲?..

3> 
    浠ヤ笂涓や釜闂浼間箮閮芥槸姣旇緝瀹規(guī)槗鐨?----鍙鎶婁唬鐮侀兘鍐欏埌cpp閲屽幓, 涓嶈鐢╯tl瀹瑰櫒浼犳潵浼犲幓灝卞彲浠ヤ簡.
   閭d箞絎笁涓棶棰樺氨瑕侀夯鐑︾殑澶?
   濡傛灉浣犺嚜宸卞啓浜嗕竴涓ā鏉? 榪欎釜妯℃澘鐢ㄤ簡stl 瀹瑰櫒..........
   榪欎釜鏃跺欎綘璇ユ庝箞鍔炲憿?
銆鏄劇劧浣犳棤娉曟妸鍜屽唴瀛樺垎閰嶇浉鍏崇殑鍑芥暟閮藉啓鍒?cpp閲屽幓 . template鐨勪唬鐮侀兘蹇呴』鏀懼埌header file閲?....
   瀵圭瓥: 瑙e喅榪欎釜闂鐨勫熀鏈仛娉曟槸鍋氫竴涓猻tl 鍐呭瓨鍒嗛厤鍣?, 寮哄埗鎶婅繖涓ā鏉塊噷鍜屽唴瀛樺垎閰嶇浉鍏崇殑鏀懼埌涓涓?cpp閲屽幓.榪欎釜鏃跺欑紪璇戣繖涓猚pp灝變細(xì)鎶婂唴瀛樺垎閰嶄唬鐮佸浐瀹氬湪涓涓湴鏂? 瑕佷箞鏄痙ll. 瑕佷箞鏄痚xe閲?..

妯℃澘+鍔ㄦ侀摼鎺ュ簱鐨勪嬌鐢ㄩ棶棰樿繕寰堝. 瑕佸崈涓囩暀蹇冭繖涓櫡闃遍亶鍦扮殑涓滆タ鍟?/p>

***************************************************************************************************************************

寰蔣鍏充簬榪欑被闂鐨勮В閲婏細(xì)

You may experience an access violation when you access an STL object through a pointer or reference in a different DLL or EXE

http://support.microsoft.com/default.aspx?scid=KB;en-us;q172396

How to export an instantiation of a Standard Template Library (STL) class and a class that contains a data member that is an STL object

http://support.microsoft.com/default.aspx?scid=KB;en-us;q168958

 

 

 

鎬葷粨錛?/p>

瀛楃涓插弬鏁扮敤char*錛孷ector鐢╟har**錛?/p>

鍔ㄦ佸唴瀛樿鐗㈣璋佺敵璇瘋皝閲婃斁鐨勫師鍒欍?/div>
 


sheng 2013-03-01 13:58 鍙戣〃璇勮
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产精品一区| 亚洲午夜视频在线| 欧美一级理论性理论a| 久久大逼视频| 久久亚洲精品网站| 欧美日韩18| 国产美女精品免费电影| 精品不卡视频| 一区二区三区精品| 欧美一区二区观看视频| 久久天天躁狠狠躁夜夜爽蜜月| 国产日韩欧美在线观看| 激情综合色综合久久| 日韩网站在线| 欧美一区91| 亚洲激情一区二区三区| 亚洲高清精品中出| 亚洲欧美在线视频观看| 欧美成人免费全部观看天天性色| 欧美日韩美女在线| 在线播放豆国产99亚洲| 亚洲一区二区在线观看视频| 久久国产精品久久久久久久久久| 久久综合导航| 亚洲一区二区三区激情| 六十路精品视频| 国产精品香蕉在线观看| 亚洲精品视频在线观看网站| 欧美诱惑福利视频| 国产亚洲人成a一在线v站 | 亚洲成人自拍视频| 亚洲一区日本| 亚洲激情二区| 久久久福利视频| 国产精品国色综合久久| 亚洲日韩中文字幕在线播放| 久久九九有精品国产23| 一区二区精品国产| 欧美激情按摩| 欧美日韩国产三区| 91久久线看在观草草青青| 亚洲欧美日韩天堂| 亚洲黄色一区| 久久久久久网址| 国产一区二区三区不卡在线观看| 亚洲一级片在线观看| 亚洲国产成人久久| 久久综合九色综合欧美狠狠| 国产伊人精品| 久久久精品国产一区二区三区| 一区二区三区精品视频| 欧美日韩成人免费| 亚洲美女中文字幕| 亚洲国产日韩在线一区模特| 麻豆av一区二区三区久久| 黄网动漫久久久| 久久综合给合| 久久综合伊人77777麻豆| 激情久久久久| 久久国产福利| 久久精品一区二区三区不卡| 黄色资源网久久资源365| 欧美在线日韩| 欧美在线视频观看免费网站| 韩国三级电影久久久久久| 蜜桃av噜噜一区二区三区| 久久久久久国产精品mv| 国产精品第一区| 亚洲欧美日韩在线观看a三区| 亚洲综合欧美日韩| 亚洲国产精品欧美一二99| 男女视频一区二区| 精品999日本| 伊人精品成人久久综合软件| 国产精品婷婷| 久久高清福利视频| 欧美老女人xx| 99国内精品久久| 久久精品免费电影| 久久综合九九| 午夜在线一区二区| 激情久久久久久久久久久久久久久久| 美女视频一区免费观看| 久久综合亚洲社区| 亚洲一区欧美| 久久激情视频| 在线视频欧美一区| 久久成人免费电影| 一本色道久久精品| 欧美一区2区三区4区公司二百| 亚洲国产精品成人va在线观看| 亚洲毛片在线免费观看| 国产视频久久久久| 午夜精品一区二区三区在线| 久久综合给合| 欧美与欧洲交xxxx免费观看| 欧美大尺度在线观看| 久久成年人视频| 欧美精品偷拍| 嫩草影视亚洲| 午夜精品美女自拍福到在线| 久久国产精品99久久久久久老狼| 久久夜色精品亚洲噜噜国产mv| 中文国产一区| 99精品视频一区| 在线视频成人| 欧美亚洲免费电影| 在线亚洲国产精品网站| 久久综合狠狠| 久久久久国产精品一区二区| 欧美网站在线观看| 亚洲精品国精品久久99热| 韩国女主播一区二区三区| 日韩视频久久| 亚洲精品一区中文| 在线中文字幕日韩| 在线观看成人av电影| 欧美亚洲专区| 欧美一区二区黄色| 国产精品国产三级国产| 亚洲精品一区二区在线观看| 亚洲大胆av| 久久另类ts人妖一区二区| 久久精品人人爽| 国产女主播视频一区二区| 亚洲香蕉网站| 免费精品99久久国产综合精品| 欧美精品色综合| 欧美国产日韩精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美综合| 欧美在线999| 国产精品一区二区久久精品| 一区二区三区四区五区精品| 亚洲一区二区三区高清不卡| 欧美顶级少妇做爰| 性欧美1819性猛交| 噜噜噜91成人网| 亚洲国产精品v| 亚洲美女在线一区| 欧美人牲a欧美精品| 亚洲免费福利视频| 亚洲视频导航| 国产精品久线观看视频| 亚洲与欧洲av电影| 欧美在线关看| 黄色日韩在线| 一区二区三区欧美在线| 国产亚洲精品久久久| 亚洲影院高清在线| 欧美日韩和欧美的一区二区| 欧美激情一区二区在线 | 亚洲社区在线观看| 亚洲日韩视频| 亚洲少妇一区| 一本一道久久综合狠狠老精东影业 | 欧美激情日韩| 亚洲美女av在线播放| 日韩午夜激情av| 欧美日韩成人综合在线一区二区 | 一区二区亚洲欧洲国产日韩| 久久亚洲精品一区| 久久久久亚洲综合| 亚洲日本中文字幕区| 国产精品麻豆成人av电影艾秋| 亚洲视频综合| 蜜桃av一区二区三区| 亚洲美女尤物影院| 国产视频一区在线观看| 美女精品在线| 亚洲一区激情| 欧美高清视频免费观看| 亚洲一区二区三区在线看 | 亚洲综合色丁香婷婷六月图片| 老司机精品福利视频| 一本高清dvd不卡在线观看| 国产精品久久午夜夜伦鲁鲁| 麻豆精品视频| 亚洲淫性视频| 99re在线精品| 欧美激情按摩| 久久亚洲精品一区| 亚洲一区免费在线观看| 亚洲高清在线观看| 国产精品99免费看 | 久久综合一区二区| 亚洲欧美激情一区| 亚洲六月丁香色婷婷综合久久| 久久久精品999| 午夜精品久久99蜜桃的功能介绍| 亚洲精品一区二区三区不| 狠狠色丁香婷婷综合影院| 免费成人在线视频网站| 久久精品亚洲精品国产欧美kt∨| 亚洲黄色一区| 亚洲经典自拍|