锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美一区二区三区视频,欧美一区二区视频观看视频,欧美日韩不卡合集视频http://www.shnenglu.com/xpzhou/瑕佹槸鐢熷懡鐪熺殑鏈夊鏋滐紝灝變笉浼氭湁榪欎箞澶氱殑閬楁喚錛涜鏄瓑涓鍒嗛挓鍙互濡傛効錛屽氨涓嶄細鏈夎繖涔堝鐨勪激鎰?..zh-cnSat, 04 Oct 2025 02:02:37 GMTSat, 04 Oct 2025 02:02:37 GMT60HOWTO: Create Debug Symbols for a Visual C++ Applicationhttp://www.shnenglu.com/xpzhou/archive/2007/06/11/26109.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Mon, 11 Jun 2007 14:54:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/06/11/26109.htmlhttp://www.shnenglu.com/xpzhou/comments/26109.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/06/11/26109.html#Feedback0http://www.shnenglu.com/xpzhou/comments/commentRss/26109.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/26109.html 1. 鍦?#8220;瑙e喅鏂規璧勬簮綆$悊鍣?#8221;涓紝鍙沖嚮瑕佷慨鏀圭殑欏圭洰錛岀劧鍚庡崟鍑?strong>灞炴?/strong>銆?/td> 2. 鍦?#8220;閰嶇疆灞炴?#8221;紿楀彛涓紝鍗曞嚮C/C++ 鏂囦歡澶癸紝鐒跺悗鍗曞嚮甯歌銆?/td> 3. 鍦?strong>璋冭瘯淇℃伅鏍煎紡涓嬫媺鍒楄〃涓紝鍗曞嚮閫夋嫨紼嬪簭鏁版嵁搴?(/Zi)銆?/td> 4. 濡傛灉鎮ㄥ笇鏈涘湪璋冭瘯杞偍鏂囦歡鎴栨墽琛屽疄鏃惰皟璇曟椂鑾峰緱鏈夊叧灞閮ㄥ彉閲忕殑淇℃伅錛岃鍗曞嚮閫夋嫨浼樺寲涓嬫媺鍒楄〃涓殑紱佺敤 (/Od)銆?/td> 5. 鍦?#8220;閰嶇疆灞炴?#8221;紿楀彛鐨?Linker 鏂囦歡澶逛腑錛岀‘淇?#8220;璋冭瘯”瀛愮被鍒殑鐢熸垚璋冭瘯淇℃伅灞炴ц緗負鏄?(/DEBUG)銆?strong>澶囨敞錛氬敖綆″茍涓嶈姹傛偍鍦ㄥ悓涓瀛愮被鍒腑鍚屾牱鍚敤鐢熸垚鏄犲皠鏂囦歡錛屼絾璇ラ夐」浼氬垱寤轟竴涓?.map 鏂囦歡錛屽綋鎮ㄥ彧鏈夊彂鐢熻闂啿紿佺殑鍦板潃鏃訛紝璇ユ枃浠跺紜畾鍙戠敓鏁呴殰鐨勪綅緗彲鑳藉緢鏈夌敤銆傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙?#8220;鍙傝?#8221;閮ㄥ垎銆? 鍦?Visual C++ 6.0 寮鍙戠幆澧冧腑涓哄簲鐢ㄧ▼搴忓垱寤虹鍙鋒枃浠訛細
1. 鍦?strong>欏圭洰鑿滃崟涓婏紝閫夋嫨璁劇疆銆?/td>
2. 鍦?strong>C/C++ 閫夐」鍗′笂錛屽皢綾誨埆鏇存敼涓?strong>甯歌銆?/td>
3. 鍦?strong>璋冭瘯淇℃伅涓嬫媺鍒楄〃涓紝閫夋嫨紼嬪簭鏁版嵁搴?/strong>銆?strong>澶囨敞錛氬鏋滄偍甯屾湜鍦ㄨ皟璇曡漿鍌ㄦ枃浠舵垨鎵ц瀹炴椂璋冭瘯鏃惰幏寰楁湁鍏沖眬閮ㄥ彉閲忕殑淇℃伅錛岃繕搴旇閫夋嫨浼樺寲涓嬫媺鍒楄〃涓殑紱佺敤錛堣皟璇曪級銆?br>
4. 鍦?strong>閾炬帴閫夐」鍗′笂錛屽皢綾誨埆鏇存敼涓?strong>璋冭瘯銆?/td>
5. 鍦?strong>璋冭瘯淇℃伅閮ㄥ垎錛岀‘淇濋変腑璋冭瘯淇℃伅 閫夐」錛岀劧鍚庨夋嫨涓ょ鏍煎紡銆?strong>澶囨敞錛氬敖綆′笉瑕佹眰鎮ㄥ湪閾炬帴閫夐」鍗′笂鍚屾牱鍚敤甯歌綾誨埆涓殑鐢熸垚鏄犲皠鏂囦歡錛屼絾璇ラ夐」浼氬垱寤轟竴涓?.map 鏂囦歡錛屽綋鎮ㄥ彧鏈夊彂鐢熻闂啿紿佺殑鍦板潃鏃訛紝璇ユ枃浠跺紜畾鍙戠敓鏁呴殰鐨勪綅緗彲鑳藉緢鏈夌敤銆傦紙鏈夊叧鏇村淇℃伅錛岃鍙傝“鍙傝?#8221;銆傦級


]]>
VC++6.0緙栬瘧鐜浠嬬粛http://www.shnenglu.com/xpzhou/archive/2007/06/08/25807.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Fri, 08 Jun 2007 02:00:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/06/08/25807.htmlhttp://www.shnenglu.com/xpzhou/comments/25807.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/06/08/25807.html#Feedback0http://www.shnenglu.com/xpzhou/comments/commentRss/25807.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/25807.html

澶у鍙兘涓鐩村湪鐢?/font>VC寮鍙戣蔣浠訛紝浣嗘槸瀵逛簬榪欎釜緙栬瘧鍣ㄥ嵈鏈繀寰堜簡瑙c傚師鍥犳槸澶氭柟闈㈢殑銆傚ぇ澶氭暟鎯呭喌涓嬶紝鎴戜滑鍙仠鐣欏湪“浣跨敤”瀹冿紝鑰屼笉浼氭兂鍘?#8220;浜嗚В”瀹冦傚洜涓哄畠鍙槸涓涓伐鍏鳳紝鎴戜滑瀹佸彲鎶婃洿澶氱殑綺懼姏鏀懼湪C++璇█鍜岃蔣浠惰璁′笂銆傛垜浠範鎯簬榪欐牱涓縐?#8220;妯″紡”錛氬緩绔嬩竴涓」鐩紝鐒跺悗鍐欎唬鐮侊紝鐒跺悗緙栬瘧錛屽弽鍙嶅澶嶈皟璇曘備絾鏄紝鎵璋擄細“鍏鍠勫叾浜嬶紝蹇呭厛鍒╁叾鍣?#8221;銆傚鏋滄垜浠簿浜?/span>VC寮鍙戠幆澧冿紝鎴戜滑鏄笉鏄兘澶熷仛寰楁洿鍔犳父鍒冩湁浣欏憿錛?/span>


Visual C++鍙柊寤虹殑 Projects欏圭洰

Visual C++鍙柊寤虹殑 File鏂囦歡

Visual C++鐨凚uild璁劇疆
1.Compile TEST.cpp閫夐」 鍙紪璇戝綋鍓嶆枃浠惰屼笉璋冪敤閾炬帴鍣ㄦ垨鍏跺畠宸ュ叿銆傝緭鍑虹獥鍙e皢鏄劇ず緙栬瘧榪囩▼媯鏌ュ嚭鐨勯敊璇垨璀﹀憡淇℃伅錛屽湪閿欒淇℃伅澶勫崟鍑婚紶鏍囧彸閿紝鍙互寰楀埌閿欒浠g爜鐨勪綅緗?br>2. Build TEST.exe 閫夐」 瀵規渶鍚庝慨鏀硅繃鐨勬簮鏂囦歡榪涜緙栬瘧鍜岄摼鎺?br>3. Rebuild All閫夐」 璇ラ夐」鍏佽鐢ㄦ埛緙栬瘧鎵鏈夌殑婧愭枃浠訛紝鑰屼笉綆″畠浠綍鏃舵浘緇忚淇敼榪?br>4. Batch Build閫夐」 璇ラ夐」鑳藉崟姝ラ噸鏂板緩绔嬪涓伐紼嬫枃浠訛紝騫跺厑璁哥敤鎴鋒寚瀹氳寤虹珛鐨勯」鐩被鍨?VC鎻愪緵浜嗕袱縐嶇洰鏍囧簲鐢ㄧ▼搴忕被鍨?Win32 Release錛堝彂琛岀増錛夈乄in32 Debug錛堣皟璇曠増錛夈?/font>


 

鎴戜滑鍏堟潵鐪嬩竴涓?/font>VC鐨勫鐞嗘祦紼嬶紝澶ц嚧鍒嗕負涓ゆ錛氱紪璇戝拰榪炴帴銆傛簮鏂囦歡閫氳繃緙栬瘧鐢熸垚浜?/span>.obj鏂囦歡錛涙墍鏈?/span>.obj鏂囦歡鍜?/span>.lib鏂囦歡閫氳繃榪炴帴鐢熸垚.exe鏂囦歡鎴?/span>.dll鏂囦歡銆備笅闈紝鎴戜滑鍒嗗埆璁ㄨ榪欎袱涓楠ょ殑涓浜涚粏鑺傘?/font>

宸ョ▼閰嶇疆瀵硅瘽妗?/strong> 鍦ㄨ繖涓璇濇涓紝宸︿笂鏂圭殑涓嬫媺鍒楄〃妗嗙敤浜庨夋嫨涓縐嶅伐紼嬮厤緗紝鍖呮嫭鏈塛in32 Debug銆乄in32 Release鍜孉ll Configurations錛堟寚鍓嶄袱縐嶉厤緗竴璧鳳級錛屾煇浜涢夐」鍦ㄤ笉鍚岀殑宸ョ▼閰嶇疆涓湁涓嶅悓鐨勭己鐪佸箋傚乏杈圭殑鏍戝艦瑙嗗浘緇欏嚭浜嗗綋鍓嶅伐紼嬫墍鏈夌殑鏂囦歡鍙婂垎綾繪儏鍐點傚鏋滄垜浠妸宸ョ▼“Schedule”緗負楂樹寒鏄劇ず錛堟濡傚浘9-1閭f牱錛夛紝瀵硅瘽妗嗙殑鍙寵竟灝變細鍑虹幇鎬誨叡鍗佷釜閫夐」鍗★紝鍏朵腑鍒楀嚭浜嗕笌宸ョ▼鏈夊叧鐨勫悇縐嶉夐」錛屼笉灝戦夐」鍗′腑鏈変竴涓猂eset鎸夐挳錛屾寜涓嬪畠鍚庡彲浠ユ妸閫夐」鍗″唴鐨勫悇欏硅緗仮澶嶅埌鐢熸垚宸ョ▼鏃剁殑鍒濆鍊箋傚鏋滄垜浠湪鏍戝艦瑙嗗浘涓夋嫨涓涓枃浠剁被鎴栦竴涓枃浠訛紝閭d箞瀵硅瘽妗嗗彸杈圭殑閫夐」鍗′細鑷姩鍑忓皯鍒頒竴涓垨涓や釜錛屽叾涓垪鍑虹殑閮芥槸涓庨変腑鐨勬枃浠剁被鎴栨枃浠舵湁鍏崇殑閫夐」銆?/font>

 緙栬瘧鍙傛暟鐨勮緗?/span>銆備富瑕侀氳繃VC鐨勮彍鍗曢」Project->Settings->C/C++欏墊潵瀹屾垚銆傛垜浠彲浠ョ湅鍒拌繖涓欏電殑鏈涓嬮潰Project Options涓殑鍐呭錛屼竴鑸涓嬶細

/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c

鍚勪釜鍙傛暟浠h〃鐨勬剰涔夛紝鍙互鍙傝?/font>Project Option璇硶瑙i噴銆傛瘮濡?/span>/nologo琛ㄧず緙栬瘧鏃朵笉鍦ㄨ緭鍑虹獥鍙f樉紺鴻繖浜涜緗紙鎴戜滑鍙互鎶婅繖涓弬鏁板幓鎺夋潵鐪嬬湅鏁堟灉錛夌瓑絳夈備竴鑸垜浠笉浼氱洿鎺ヤ慨鏀硅繖浜涜緗紝鑰屾槸閫氳繃榪欎竴欏墊渶涓婇潰鐨?/span>Category涓殑鍚勯」鏉ュ畬鎴愩?/font>

1)General錛氫竴浜涙諱綋璁劇疆銆?/span>Warning level鐢ㄦ潵鎺у埗璀﹀憡淇℃伅錛?/span>None琛ㄧず涓嶆樉紺轟換浣曡鍛婏紝L1琛ㄧず鍙樉紺轟弗閲嶇殑璀﹀憡錛孡2琛ㄧず鏄劇ず姣擫1嬈′弗閲嶇殑璀﹀憡錛孡4鍒欒〃紺烘樉紺哄嚭鎵鏈夌殑璀﹀憡錛屽寘鎷偅浜涘畨鍏ㄥ拷鐣ョ殑璀﹀憡錛?/span>Warnings as errors灝嗚鍛婁俊鎭綋浣滈敊璇鐞?/span>錛岃繖鏍峰湪緙栬瘧瀹屾瘯鍚庡氨鏃犳硶鍚姩榪炴帴鍣ㄦ潵榪涜榪炴帴錛?/span>Optimizations鏄唬鐮佷紭鍖栵紝鍙互鍦?/span>Category鐨?/span>Optimizations欏逛腑榪涜鏇寸粏鐨勮緗紱Generate browse info鐢ㄤ互鐢熸垚.sbr鏂囦歡錛岃褰曠被銆佸彉閲忕瓑絎﹀彿淇℃伅錛屽彲浠ュ湪Category鐨?/span>Listing Files欏逛腑榪涜鏇村鐨勮緗?/span>Debug info錛岀敓鎴愯皟璇曚俊鎭細None錛屼笉浜х敓浠諱綍璋冭瘯淇℃伅錛堢紪璇戞瘮杈冨揩錛夛紱Line Numbers Only錛屼粎鐢熸垚鍏ㄥ眬鐨勫拰澶栭儴絎﹀彿鐨勮皟璇曚俊鎭埌.OBJ鏂囦歡鎴?/span>.EXE鏂囦歡錛屽噺灝忕洰鏍囨枃浠剁殑灝哄錛?/span>C 7.0- Compatible錛岃褰曡皟璇曞櫒鐢ㄥ埌鐨勬墍鏈夌鍙蜂俊鎭埌.OBJ鏂囦歡鍜?/span>.EXE鏂囦歡錛?/span>Program Database錛屽垱寤?/span>.PDB鏂囦歡璁板綍鎵鏈夎皟璇曚俊鎭紱Program Database for "Edit & Continue"錛屽垱寤?/span>.PDB鏂囦歡璁板綍鎵鏈夎皟璇曚俊鎭紝騫朵笖鏀寔璋冭瘯鏃剁紪杈戙?/font>

2)C++ Language錛?/span>pointer_to_member representation鐢ㄦ潵璁劇疆綾誨畾涔?/span>/寮曠敤鐨勫厛鍚庡叧緋伙紝涓鑸負Best-Case Always琛ㄧず鍦ㄥ紩鐢ㄧ被涔嬪墠璇ョ被鑲畾宸茬粡瀹氫箟浜嗭紱Enable Exception Handling錛岃繘琛屽悓姝ョ殑寮傚父澶勭悊錛?/span>Enable Run-Time Type Information榪嬌緙栬瘧鍣ㄥ鍔犱唬鐮佸湪榪愯鏃惰繘琛屽璞$被鍨嬫鏌ワ紱Disable Construction Displacements錛岃緗被鏋勯?/span>/鏋愭瀯鍑芥暟璋冪敤铏氬嚱鏁伴棶棰樸?/font>

  

3)Code Generation錛?/span>Processor琛ㄧず浠g爜鎸囦護浼樺寲錛屽彲浠ヤ負80386銆?/span>80486銆?/span>Pentium銆?/span>Pentium Pro錛屾垨鑰?/span>Blend琛ㄧず娣峰悎浠ヤ笂鍚勭浼樺寲銆?/span>Use run-time library鐢ㄤ互鎸囧畾紼嬪簭榪愯鏃朵嬌鐢ㄧ殑榪愯鏃跺簱錛堝崟綰跨▼鎴栧綰跨▼錛?/span>Debug鐗堟湰鎴?/span>Release鐗堟湰錛夛紝鏈変竴涓師鍒欏氨鏄紝涓涓繘紼嬩笉瑕佸悓鏃朵嬌鐢ㄥ嚑涓増鏈殑榪愯鏃跺簱銆?/span>Single-Threaded錛岄潤鎬佽繛鎺?/span>LIBC.LIB搴擄紱Debug Single-Threaded錛岄潤鎬佽繛鎺?/span>LIBCD.LIB搴擄紱Multithreaded錛岄潤鎬佽繛鎺?/span>LIBCMT.LIB搴擄紱Debug Multithreaded錛岄潤鎬佽繛鎺?/span>LIBCMTD.LIB搴擄紱Multithreaded DLL錛屽姩鎬佽繛鎺?/span>MSVCRT.DLL搴擄紱Debug Multithreaded DLL錛屽姩鎬佽繛鎺?/span>MSVCRTD.DLL搴撱傝繛鎺ヤ簡鍗曠嚎紼嬪簱灝變笉鏀寔澶氱嚎紼嬭皟鐢紝榪炴帴浜嗗綰跨▼搴撳氨瑕佹眰鍒涘緩澶氱嚎紼嬬殑搴旂敤紼嬪簭銆?/span>Calling convention鍙互鐢ㄦ潵璁懼畾璋冪敤綰﹀畾錛屾湁涓夌錛?/span>__cdecl銆?/span>__fastcall鍜?/span>__stdcall銆傚悇縐嶈皟鐢ㄧ害瀹氱殑涓昏鍖哄埆鍦ㄤ簬錛屽嚱鏁拌皟鐢ㄦ椂錛屽嚱鏁扮殑鍙傛暟鏄粠宸﹀埌鍙沖帇鍏ュ爢鏍堣繕鏄粠鍙沖埌宸﹀帇鍏ュ爢鏍堬紱鍦ㄥ嚱鏁拌繑鍥炴椂錛岀敱鍑芥暟鐨勮皟鐢ㄨ呮潵娓呯悊鍘嬪叆鍫嗘爤鐨勫弬鏁拌繕鏄敱鍑芥暟鏈韓鏉ユ竻鐞嗭紱浠ュ強鍦ㄧ紪璇戞椂瀵瑰嚱鏁板悕榪涜鐨勫懡鍚嶄慨楗幫紙鍙互閫氳繃Listing Files鐪嬪埌鍚勭鍛藉悕淇グ鏂瑰紡錛夈?/span>Struct member alignment鐢ㄤ互鎸囧畾鏁版嵁緇撴瀯涓殑鎴愬憳鍙橀噺鍦ㄥ唴瀛樹腑鏄寜鍑犲瓧鑺傚榻愮殑錛屾牴鎹綆楁満鏁版嵁鎬葷嚎鐨勪綅鏁幫紝涓嶅悓鐨勫榻愭柟寮忓瓨鍙栨暟鎹殑閫熷害涓嶄竴鏍楓傝繖涓弬鏁板鏁版嵁鍖呯綉緇滀紶杈撶瓑搴旂敤灝や負閲嶈錛屼笉鏄瓨鍙栭熷害闂錛岃屾槸鏁版嵁浣嶇殑綺劇‘瀹氫箟闂錛屼竴鑸湪紼嬪簭涓嬌鐢?/span>#pragma pack鏉ユ寚瀹氥?/font>

4)Customize錛?/span>Disable Language Extensions錛岃〃紺轟笉浣跨敤寰蔣涓烘爣鍑?/span>C鍋氱殑璇█鎵╁睍錛?/span>Eliminate Duplicate Strings錛屼富瑕佺敤浜庡瓧絎︿覆浼樺寲錛堝皢瀛楃涓叉斁鍒扮紦鍏呮睜閲屼互鑺傜渷絀洪棿錛夛紝浣跨敤榪欎釜鍙傛暟錛屼嬌寰?/font>

char *sBuffer = "This is a character buffer";

char *tBuffer = "This is a character buffer";

sBuffer鍜?/span>tBuffer鎸囧悜鐨勬槸鍚屼竴鍧楀唴瀛樼┖闂達紱Enable Function-Level Linking 錛屽憡璇夌紪璇戝櫒灝嗗悇涓嚱鏁版寜鎵撳寘鏍煎紡緙栬瘧錛?/span>Enables minimal rebuild錛岄氳繃淇濆瓨鍏寵仈淇℃伅鍒?/span>.IDB鏂囦歡錛屼嬌緙栬瘧鍣ㄥ彧瀵規渶鏂扮被瀹氫箟鏀瑰姩榪囩殑婧愭枃浠惰繘琛岄噸緙栬瘧錛屾彁楂樼紪璇戦熷害錛?/span>Enable Incremental Compilation錛屽悓鏍烽氳繃.IDB鏂囦歡淇濆瓨鐨勪俊鎭紝鍙噸緙栬瘧鏈鏂版敼鍔ㄨ繃鐨勫嚱鏁幫紱Suppress Startup Banner and Information Messages錛岀敤浠ユ帶鍒跺弬鏁版槸鍚﹀湪output紿楀彛杈撳嚭銆?/font>

5) Listing Files錛?/span>Generate browse info鐨勫姛鑳戒笂闈㈠凡緇忔彁鍒拌繃銆傝繖閲屽彲浠ヨ繘琛屾洿澶氱殑璁劇疆銆?/span>Exclude Local Variables from Browse Info琛ㄧず鏄惁灝嗗眬閮ㄥ彉閲忕殑淇℃伅鏀懼埌.SBR鏂囦歡涓?/span>Listing file type鍙互璁劇疆鐢熸垚鐨勫垪琛ㄤ俊鎭枃浠剁殑鍐呭錛?/span>Assembly-Only Listing浠呯敓鎴愭眹緙栦唬鐮佹枃浠訛紙.ASM鎵╁睍鍚嶏級錛?/span>Assembly With Machine Code鐢熸垚鏈哄櫒浠g爜鍜屾眹緙栦唬鐮佹枃浠訛紙.COD鎵╁睍鍚嶏級錛?/span>Assembly With Source Code鐢熸垚婧愪唬鐮佸拰姹囩紪浠g爜鏂囦歡錛?/span>.ASM鎵╁睍鍚嶏級錛?/span>Assembly, Machine Code, and Source鐢熸垚鏈哄櫒鐮併佹簮浠g爜鍜屾眹緙栦唬鐮佹枃浠訛紙.COD鎵╁睍鍚嶏級銆?/span>Listing file name涓虹敓鎴愮殑淇℃伅鏂囦歡鐨勮礬寰勶紝涓鑸負Debug鎴?/span>Release鐩綍涓嬶紝鐢熸垚鐨勬枃浠跺悕鑷姩鍙栨簮鏂囦歡鐨勬枃浠跺悕銆?/font>

 

6)Optimizations錛?/span>浠g爜浼樺寲璁劇疆銆傚彲浠ラ夋嫨Maximize Speed鐢熸垚鏈蹇熺殑浠g爜錛屾垨Minimize Size鐢熸垚鏈灝忓昂瀵哥殑紼嬪簭錛屾垨鑰?/span>Customize瀹氬埗浼樺寲銆傚畾鍒剁殑鍐呭鍖呮嫭錛?/font>

Assume No Aliasing錛屼笉浣跨敤鍒悕錛堟彁楂橀熷害錛夛紱

Assume Aliasing Across Function Calls錛屼粎鍑芥暟鍐呴儴涓嶄嬌鐢ㄥ埆鍚嶏紱

Global Optimizations錛屽叏灞浼樺寲錛屾瘮濡傜粡甯哥敤鍒扮殑鍙橀噺浣跨敤瀵勫瓨鍣ㄤ繚瀛橈紝鎴栬呭驚鐜唴鐨勮綆椾紭鍖栵紝濡?/font>

i = -100;

while( i < 0 ){    i += x + y;}

浼氳浼樺寲涓?/font>

i = -100;

t = x + y;

while( i < 0 ){i += t;}

Generate Intrinsic Functions錛屼嬌鐢ㄥ唴閮ㄥ嚱鏁版浛鎹竴浜涘嚱鏁拌皟鐢紙鎻愰珮閫熷害錛夛紱

Improve Float Consistency錛屾誕鐐硅繍綆楁柟闈㈢殑浼樺寲錛?/font>

Favor Small Code錛岀▼搴忥紙exe鎴?/span>dll錛夊昂瀵鎬紭鍖栦紭鍏堜簬浠g爜閫熷害浼樺寲錛?/font>

Favor Fast Code錛岀▼搴忥紙exe鎴?/span>dll錛変唬鐮侀熷害浼樺寲浼樺厛浜庡昂瀵鎬紭鍖栵紱

Frame-Pointer Omission錛屼笉浣跨敤甯ф寚閽堬紝浠ユ彁楂樺嚱鏁拌皟鐢ㄩ熷害錛?/font>

Full Optimization錛岀粍鍚堜簡鍑犵鍙傛暟錛屼互鐢熸垚鏈蹇殑紼嬪簭浠g爜銆?/font>

Inline function expansion錛屽唴鑱斿嚱鏁版墿灞曠殑涓夌浼樺寲錛堜嬌鐢ㄥ唴鑱斿彲浠ヨ妭鐪佸嚱鏁拌皟鐢ㄧ殑寮閿錛屽姞蹇▼搴忛熷害錛夛細Disable涓嶄嬌鐢ㄥ唴鑱旓紱Only __inline錛屼粎鍑芥暟瀹氫箟鍓嶆湁inline鎴?/span>__inline鏍囪浣跨敤鍐呰仈錛?/span>Any Suitable錛岄櫎浜?/span>inline鎴?/span>__inline鏍囪鐨勫嚱鏁板錛岀紪璇戝櫒“瑙夊緱”搴旇浣跨敤鍐呰仈鐨勫嚱鏁幫紝閮戒嬌鐢ㄥ唴鑱斻?/font>

7)Precompiled Headers錛氶緙栬瘧澶存枃浠剁殑璁劇疆銆?/font>

 棰勭紪璇戝ご鐨勬蹇碉細 鎵璋撶殑棰勭紪璇戝ご灝辨槸鎶婁竴涓伐紼嬩腑鐨勯偅涓閮ㄥ垎浠g爜,棰勫厛緙栬瘧濂芥斁鍦ㄤ竴涓枃浠墮噷(閫氬父鏄互.pch涓烘墿灞曞悕鐨?錛岃繖涓枃浠跺氨縐頒負棰勭紪璇戝ご鏂囦歡榪欎簺棰勫厛緙栬瘧濂界殑浠g爜鍙互鏄換浣曠殑C/C++浠g爜--------鐢氳嚦鏄痠nline鐨勫嚱鏁幫紝浣嗘槸蹇呴』鏄ǔ瀹氱殑錛屽湪宸ョ▼寮鍙戠殑榪囩▼涓笉浼氳緇忓父鏀瑰彉銆傚鏋滆繖浜涗唬鐮佽淇敼錛屽垯闇瑕侀噸鏂扮紪璇戠敓鎴愰緙栬瘧澶存枃浠躲?/font>浣犲彲灝嗗皢涓浜涘叕鍏辯殑銆佷笉澶у彉鍔ㄧ殑澶存枃浠訛紙姣斿FILEX.h絳夛級闆嗕腑鏀懼埌stdafx.h涓紝榪欎竴閮ㄥ垎浠g爜灝變笉蹇呮瘡嬈¢兘閲嶆柊緙栬瘧錛堥櫎闈炴槸Rebuild All錛夈?/font>娉ㄦ剰鐢熸垚棰勭紪璇戝ご鏂囦歡鏄緢鑰楁椂闂寸殑銆傚悓鏃朵綘寰楁敞鎰忛緙栬瘧澶存枃浠墮氬父寰堝ぇ錛岄氬父鏈?-7M澶с?span lang=ZH-CN>浣跨敤棰勭紪璇戝彲浠ユ彁楂橀噸澶嶇紪璇戠殑閫熷害銆?/span>

  涔熻浣犱細闂細鐜板湪鐨勭紪璇戝櫒閮芥湁Time stamp鐨勫姛鑳斤紝緙栬瘧鍣ㄥ湪緙栬瘧鏁翠釜宸ョ▼鐨勬椂鍊欙紝瀹冨彧浼氱紪璇戦偅浜涚粡榪囦慨鏀圭殑鏂囦歡錛岃屼笉浼氬幓緙栬瘧閭d簺浠庝笂嬈$紪璇戣繃錛屽埌鐜板湪娌℃湁琚慨鏀硅繃鐨勬枃浠躲傞偅涔堜負浠涔堣繕瑕侀緙栬瘧澶存枃浠跺憿錛熺瓟妗堝湪榪欓噷錛屾垜浠煡閬撶紪璇戝櫒鏄互鏂囦歡涓哄崟浣嶇紪璇戠殑錛屼竴涓枃浠剁粡榪囦慨鏀瑰悗錛屼細閲嶆柊緙栬瘧鏁翠釜鏂囦歡錛屽綋鐒跺湪榪欎釜鏂囦歡閲屽寘鍚殑鎵鏈夊ご鏂囦歡涓殑涓滆タ錛?eg Macro, Preprocessor 錛夐兘瑕侀噸鏂板鐞嗕竴閬嶃俈C鐨勯緙栬瘧澶存枃浠朵繚瀛樼殑姝f槸榪欓儴鍒嗕俊鎭備互閬垮厤姣忔閮借閲嶆柊澶勭悊榪欎簺澶存枃浠躲?/font>

1.榪欓噷鏄嬌鐢ㄥ伐紼嬮噷鐨勮緗紝/Yu”stdafx.h”銆傚鏋滀嬌鐢ㄤ簡/Yu錛屽氨鏄浣跨敤浜嗛緙栬瘧錛屾垜浠湪姣忎釜.cpp鏂囦歡鐨勬渶寮澶達紝鎴戝己璋冧竴閬嶆槸鏈寮澶達紝鍖呭惈 浣犳寚瀹氫駭鐢焢ch鏂囦歡鐨?h鏂囦歡錛堥粯璁ゆ槸stdafx.h錛変笉鐒跺氨浼氭湁闂銆傚鏋滀綘娌℃湁鍖呭惈榪欎釜鏂囦歡錛屽氨鍛婅瘔浣燯nexpected file end. 濡傛灉浣犱笉鏄湪鏈寮澶村寘鍚殑

2.濡傛灉浣犳妸pch鏂囦歡涓嶅皬蹇冧涪浜嗭紝鏈綆鍗曠殑鍔炴硶灝辨槸閫変腑絎竴涓夐」“Not using....",榪欐牱灝辨牴鏈笉鐢ㄩ緙栬瘧澶翠篃涓嶅幓瀵繪壘pch鏂囦歡錛屽氨涓嶄細鍑洪敊浜嗭紝浣嗘槸榪欐牱鍋氱殑鍚庢灉鏄瘡嬈$紪璇戙佽繛鎺ラ兘鍖栨洿澶氱殑鏃墮棿銆備篃鍙互閫夌浜屼釜閫夐」”Automatic use of",鐒跺悗鍦?#8220;Through header”鍔涘~涓妔tdafx.h錛岃繖鏍峰鏋滄病鏈塸ch鏂囦歡緋葷粺浼氳嚜鍔ㄧ敓鎴愪竴涓猵ch錛屽鏋滄湁鐨勮瘽灝變嬌鐢ㄨ繖涓猵ch錛岃繖涓夐」鏄瘮杈?#8220;鏅鴻兘”鐨勩傜涓変釜閫夐」鏄己琛屽垱寤轟竴涓猵ch鏂囦歡錛岀鍥涗釜閫夐」鏄洿鎺ヤ嬌鐢╬ch鏂囦歡銆傚綋鐒?#8220;Through headers”閲岄兘濉玸tdafx.h浜嗐?/font>

璁╃紪璇戝櫒鐢熸垚涓涓猵ch鏂囦歡灝卞彲浠ヤ簡銆備篃灝辨槸璇存妸 stdafx.cpp錛堝嵆鎸囧畾/Yc鐨勯偅涓猚pp鏂囦歡錛変粠鏂扮紪璇戜竴閬嶅氨鍙互浜嗐傚綋鐒朵綘鍙互鍌誨偦鐨?Rebuild all銆?/font>

8) Preprocessor錛氶緙栬瘧澶勭悊銆?/span>鎴戜滑鍙互鍦ㄨ繖閲岄鍏堝畾涔変竴浜涘畯鍚嶏紝鎸囧畾閮ㄥ垎鎴栨墍鏈夌鍙峰叿鏈夋湭瀹氫箟鐘舵?span lang=ZH-CN>銆?/span>Additional include directories錛屽彲浠ユ寚瀹氶澶栫殑鍖呭惈鐩綍錛屼竴鑸槸鐩稿浜庢湰欏圭洰鐨勭洰褰曪紝濡?/span>..\Include銆?/font>

Link榪炴帴鍙傛暟鐨勮緗?/strong>銆備富瑕侀氳繃VC鐨勮彍鍗曢」Project->Settings->Link欏墊潵瀹屾垚銆傛垜浠彲浠ョ湅鍒拌繖涓欏電殑鏈涓嬮潰Project Options涓殑鍐呭錛屼竴鑸涓嬶細

/nologo /subsystem:windows /incremental:yes /pdb:"Debug/WritingDlgTest.pdb" /debug /machine:I386 /out:"Debug/WritingDlgTest.exe" /pdbtype:sept

涓嬮潰鎴戜滑鍒嗗埆鏉ョ湅涓涓?/font>Category涓殑鍚勯」璁劇疆銆?/font>

 

1General錛氫竴浜涙諱綋璁劇疆銆傚彲浠ヨ緗敓鎴愮殑鏂囦歡璺緞銆佹枃浠跺悕 濡?/span>鍦?#8220;Output   file   name:”涓嬮潰鐨勭紪杈戞涓彲杈撳叆錛?#8220;C:\bin\TEST.exe”錛涜繛鎺ョ殑搴撴枃浠訛紱Generate debug info錛岀敓鎴?/span>Debug淇℃伅鍒?/span>.PDB鏂囦歡錛堝叿浣撴牸寮忓彲浠ュ湪Category->Debug涓緗級錛?/span>Ignore All Default Libraries錛屾斁寮冩墍鏈夐粯璁ょ殑搴撹繛鎺ワ紱Link Incrementally錛岄氳繃鐢熸垚. ILK鏂囦歡瀹炵幇閫掑寮忚繛鎺ヤ互鎻愰珮鍚庣畫榪炴帴閫熷害錛屼絾涓鑸繖縐嶆柟寮忎笅鐢熸垚鐨勬枃浠訛紙EXE鎴?/span>DLL錛夎緝澶э紱Generate Mapfile錛岀敓鎴?/span>.MAP鏂囦歡璁板綍妯″潡鐩稿叧淇℃伅錛?/span>Enable Profiling錛岃繖涓弬鏁伴氬父涓?/span>Generate Mapfile鍙傛暟鍚屾椂浣跨敤錛岃屼笖濡傛灉浜х敓Debug淇℃伅鐨勮瘽錛屼笉鑳界敤.PDB鏂囦歡錛岃屼笖蹇呴』鐢?/span>Microsoft Format銆?/span>  

2Customize錛氳繖閲屽彲浠ヨ繘琛屼嬌鐢ㄧ▼搴忔暟鎹簱鏂囦歡鐨勮緗?/span>閫変腑Use program database鍏佽浣跨敤紼嬪簭鏁版嵁搴擄紝榪欐牱榪炴帴鍣ㄤ細鎶婅皟璇曚俊鎭斁鍦ㄧ▼搴忔暟鎹簱涓紝濡傛灉涓嶉変腑璇ラ夐」錛岄偅涔堜篃涓嶈兘浣跨敤閫掑榪炴帴鏂瑰紡銆侳orce File Output 錛?/span>鍗充嬌鏌愪釜妯″潡寮曠敤浜嗕竴浜涙湭瀹氫箟鎴栬呴噸澶嶅畾涔夌殑絎﹀彿錛岃繛鎺ュ櫒浠嶇劧浼?span lang=ZH-CN>寮哄埗錛堜絾涓嶄竴瀹氳兘姝g‘榪愯錛?span lang=ZH-CN>浜х敓杈撳嚭鏂囦歡錛?/span>EXE鎴?/span>DLL錛夛紱Print Progress Messages錛屽彲浠ュ皢榪炴帴榪囩▼涓殑榪涘害淇℃伅杈撳嚭鍒?/span>Output紿楀彛銆?/font>

  

3. Debug錛?/span>璁劇疆鏄惁鐢熸垚璋冭瘯淇℃伅錛屼互鍙婅皟璇曚俊鎭殑鏍煎紡銆傛牸寮忓彲浠ユ湁Microsoft Format銆?/span>COFF Format錛?/span>Common Object File Format錛夊拰Both Formats錛堜袱縐嶉兘鏈?span lang=ZH-CN>錛変笁縐嶉夋嫨錛?/span>Separate Types錛岃〃紺哄皢Debug鏍煎紡淇℃伅浠ョ嫭绔嬬殑.PDB鏂囦歡瀛樻斁錛岃繕鏄洿鎺ユ斁鍦ㄥ悇涓簮鏂囦歡鐨?/span>.PDB鏂囦歡涓傞変腑鐨勮瘽錛岃〃紺洪噰鐢ㄥ悗鑰呯殑鏂瑰紡錛岃繖縐嶆柟寮忚皟璇曞惎鍔ㄦ瘮杈冨揩銆?/font>

4Input錛?/span>榪欓噷鍙互鎸囧畾瑕佽繛鎺ョ殑搴撴枃浠訛紝鏀懼純榪炴帴鐨勫簱鏂囦歡銆傝繕鍙互澧炲姞棰濆鐨勫簱鏂囦歡鐩綍錛屼竴鑸槸鐩稿浜庢湰欏圭洰鐨勭洰褰曪紝濡?/span>..\Lib銆?/span>Force Symbol References錛屽彲浠ユ寚瀹氳繛鎺ョ壒瀹氱鍙峰畾涔夌殑搴撱?/span> 濡?鍦?#8220;Object/library   Modules:”涓嬮潰鐨勭紪杈戞涓緭鍏ワ細“TestDll.lib”錛涘湪“Additional   library   path:”涓嬮潰鐨勭紪杈戞涓緭鍏ワ細“C:\bin”銆傚彲鐢╓orkspace鍙︿竴涓伐紼嬬紪璇戠殑闈欐佸簱

5.Output錛?/span>Base Address鍙互鏀瑰彉紼嬪簭榛樿鐨勫熀鍦板潃錛?/span>EXE鏂囦歡榛樿涓?/span>0x400000錛?/span>DLL榛樿涓?/span>0x10000000錛夛紝鎿嶄綔緋葷粺瑁呰澆涓涓▼搴忔椂鎬繪槸璇曠潃鍏堜粠榪欎釜鍩哄湴鍧寮濮嬨?/span>Entry-Point Symbol鍙互鎸囧畾紼嬪簭鐨勫叆鍙e湴鍧錛屼竴鑸負涓涓嚱鏁板悕錛堜笖蹇呴』閲囩敤__stdcall璋冪敤綰﹀畾錛夈備竴鑸?/span>Win32鐨勭▼搴忥紝EXE鐨勫叆鍙d負WinMain錛?/span>DLL鐨勫叆鍙d負DllEntryPoint錛涙渶濂借榪炴帴鍣ㄨ嚜鍔ㄨ緗▼搴忕殑鍏ュ彛鐐廣傞粯璁ゆ儏鍐典笅錛岄氳繃涓涓?/span>C鐨勮繍琛屾椂搴撳嚱鏁版潵瀹炵幇錛氭帶鍒跺彴紼嬪簭閲囩敤mainCRTStartup (鎴?/span>wmainCRTStartup)鍘昏皟鐢ㄧ▼搴忕殑main (鎴?/span>wmain)鍑芥暟錛?/span>Windows紼嬪簭閲囩敤WinMainCRTStartup (鎴?/span> wWinMainCRTStartup)璋冪敤紼嬪簭鐨?/span>WinMain (鎴?/span> wWinMain錛屽繀欏婚噰鐢?/span>__stdcall璋冪敤綰﹀畾)錛?/span>DLL閲囩敤_DllMainCRTStartup璋冪敤DllMain鍑芥暟錛堝繀欏婚噰鐢?/span>__stdcall璋冪敤綰﹀畾錛夈?/span>Stack allocations錛岀敤浠ヨ緗▼搴忎嬌鐢ㄧ殑鍫嗘爤澶у皬錛堣浣跨敤鍗佽繘鍒訛級錛岄粯璁や負1鍏嗗瓧鑺傘?/span>Version Information鍛婅瘔榪炴帴鍣ㄥ湪EXE鎴?/span>DLL鏂囦歡鐨勫紑濮嬮儴鍒嗘斁涓婄増鏈彿銆?/span>涓鑸儏鍐典笅閮戒笉鐢ㄦ敼鍙樸?/font>

 

鍊煎緱娉ㄦ剰鐨勬槸錛屼笂闈㈠悇涓弬鏁版槸澶у皬鍐欐晱鎰熺殑錛涘湪鍙傛暟鍚庡姞涓?#8220;-”琛ㄧず璇ュ弬鏁版棤鏁堬紱鍚勪釜鍙傛暟鍊奸夐」鏈?#8220;*”鐨勮〃紺轟負璇ュ弬鏁扮殑榛樿鍊鹼紱鍙互浣跨敤欏靛彸涓婅鐨?#8220;Reset”鎸夐挳鏉ユ仮澶嶈欏電殑鎵鏈夐粯璁よ緗?/font>

 

9)Resources閫夐」鍗?/strong>  Resources閫夐」鍗℃帶鍒剁潃VC6鐨勮祫婧愮紪璇戝櫒銆傚鍥?-5鎵紺猴紝鎴戜滑鍙互鎸囧畾緙栬瘧鍚庣敓鎴愮殑璧勬簮鏂囦歡鐨勮礬寰勶紝璧勬簮鐨勮璦綾誨瀷錛屼互鍙婇澶栫殑璧勬簮鍖呭惈鐩綍銆?/font>

 MIDL閫夐」鍗?榪欎釜閫夐」鍗′笌COM錛堢粍浠跺璞℃ā鍨嬶級緙栫▼鏈夊叧錛屾垜浠笉璁ㄨ瀹冦?/font>

10)Browse Info閫夐」鍗?鍦ㄨ繖涓夐」鍗′腑錛屾垜浠彲浠ユ寚瀹氭槸鍚﹀湪寤虹珛宸ョ▼鐨勫悓鏃朵篃鐢熸垚嫻忚淇℃伅鏂囦歡錛屾湁浜嗚繖涓枃浠跺悗錛屾垜浠氨鑳藉鍦ㄦ枃鏈紪杈戝櫒涓氳繃鍏寵仈鑿滃崟鐨勭浉搴斿懡浠ゅ揩閫熷畾浣嶅埌鏌愪釜絎﹀彿鐨勫畾涔夋垨寮曠敤鐨勫湴鏂廣?/font>

11)Pre-link step

榪欎釜閫夐」鍗$敤浜庢坊鍔犲湪榪炴帴涔嬪墠瑕佹墽琛岀殑鍛戒護銆?/font>

l2) Post-build step

榪欎釜閫夐」鍗$敤浜庢坊鍔犲湪宸ョ▼寤虹珛瀹屾瘯涔嬪悗瑕佹墽琛岀殑鍛戒護 濡?“copy debug\TestDll.lib C:\bin\TestDll.lib” 騫跺湪C鐩樹笅寤轟竴涓猙in鐩綍 鍋氱殑浠朵簨鎯呭氨鏄妸TestDLL.lib鎷瘋礉鍒癈:\bin鎵鍦ㄧ殑鏂囦歡澶逛腑

鍏跺畠涓浜涘弬鏁拌緗?/font>銆?/font>

  

13) Project->Settings->General錛屽彲浠ヨ緗繛鎺?/span>MFC搴撶殑鏂瑰紡錛堥潤鎬佹垨鍔ㄦ侊級銆傚鏋滄槸鍔ㄦ佽繛鎺ワ紝鍦ㄤ綘鐨勮蔣浠跺彂甯冩椂涓嶈蹇樹簡甯︿笂MFC鐨?/span>DLL銆?/span>絎簩涓夐」鐢ㄤ簬鎸囧畾鍦ㄧ紪璇戣繛鎺ヨ繃紼嬩腑鐢熸垚鐨勪腑闂存枃浠跺拰杈撳嚭鏂囦歡鐨勫瓨鏀劇洰褰曪紝瀵逛簬璋冭瘯鐗堟湰鏉ヨ錛岀己鐪佺殑鐩綍鏄伐紼嬩笅闈㈢殑“Debug”瀛愮洰褰曘傛渶涓嬮潰鐨勭涓変釜閫夐」鐢ㄤ簬鎸囧畾鏄惁鍏佽姣忕宸ョ▼閰嶇疆閮芥湁鑷繁鐨勬枃浠朵緷璧栧叧緋伙紙涓昏鎸囧ご鏂囦歡錛夛紝鐢變簬緇濆ぇ澶氭暟宸ョ▼鐨勮皟璇曠増鏈拰鍙戝竷鐗堟湰閮藉叿鏈夌浉鍚岀殑鏂囦歡渚濊禆鍏崇郴錛屾墍浠ラ氬父涓嶉渶瑕佹洿鏀硅閫夐」銆?/font>

14) Project->Settings->Debug錛屽彲浠ヨ緗皟璇曟椂榪愯鐨勫彲鎵ц鏂囦歡錛?/span>濡傛灉姝e湪緙栧啓鐨勭▼搴忔槸涓涓狣LL錛岄偅涔堝簲鍦ㄦ澶勬寚瀹氫竴涓敤鏉ヨ皟璇曡DLL鐨凟XE鏂囦歡銆傚彟澶栦笁涓夐」鍙互鎸囧畾鐢ㄤ簬璋冭瘯鐨勫伐浣滅洰褰曪紝寮濮嬭皟璇曟椂緇欑▼搴忎紶閫佺殑鍛戒護琛屽弬鏁幫紝浠ュ強榪涜榪滅▼璋冭瘯鏃跺彲鎵ц鏂囦歡鐨勮礬寰勩傛妸綾誨埆鍒囨崲鍒癆dditional DLLs鍚庯紝鎴戜滑鍙互鎸囧畾鍦ㄥ紑濮嬭皟璇曟椂鏄惁涓轟竴浜涢澶栫殑DLL瑁呰澆璋冭瘯絎﹀彿淇℃伅錛屽彧鏈夎杞戒簡絎﹀彿淇℃伅鍚庢墠鑳借窡韙繘DLL銆?/font>

15)Project->Settings->Custom Build錛屽彲浠ヨ緗紪璇?/span>/榪炴帴鎴愬姛鍚庤嚜鍔ㄦ墽琛屼竴浜涙搷浣溿傛瘮杈冩湁鐢ㄧ殑鏄紝鍐?/span>COM鏃跺笇鏈?/span>VC瀵圭紪璇戦氳繃鐨?/span>COM鏂囦歡鑷姩娉ㄥ唽錛屽彲浠ュ涓嬭緗細

Description: Register COM

Commands: regsvr32 /s /c $(TargetPath)

echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg

Outputs: $(TargetDir)\$(TargetName).trg

16)Tools->Options->Directories錛岃緗郴緇熺殑Include銆?/span>Library璺緞銆?/font>

 

涓浜涘皬紿嶉棬

1) 鏈夋椂鍊欙紝浣犲彲鑳藉湪緙栬瘧鐨勬椂鍊欙紝璁$畻鏈虹獊鐒墮潪娉曞叧鏈轟簡錛堝彲鑳芥煇浜轟笉灝忓績紕頒簡鐢墊簮鎴栦綘鐨勫唴瀛樹笉紼沖畾絳夊師鍥狅級銆傚綋浣犻噸鍚満鍣ㄥ悗鎵撳紑鍒氭墠鐨勯」鐩紝閲嶆柊榪涜緙栬瘧錛屽彂鐜?/span>VC浼氬穿鎺夈備綘鎴栬浠ヤ負浣犵殑VC緙栬瘧鍣ㄥ潖浜嗭紝鍏跺疄涓嶇劧錛堜綘璇曡瘯緙栬瘧鍏跺畠欏圭洰錛岃繕鏄ソ鐨勶紒錛夛紝浣犲彧瑕佸皢欏圭洰鐨?/span>.ncb銆?/span>.opt銆?/span>.aps銆?/span>.clw鏂囦歡浠ュ強Debug銆?/span>Release鐩綍涓嬬殑鎵鏈夋枃浠墮兘鍒犳帀錛岀劧鍚庨噸鏂扮紪璇戝氨琛屼簡銆?/span> 

2) 濡傛灉浣犳兂涓庡埆浜哄叡浜綘鐨勬簮浠g爜欏圭洰錛屼絾鏄妸鏁翠釜欏圭洰鍋氭嫹璐濆張澶ぇ銆備綘瀹屽叏鍙互鍒犳帀浠ヤ笅鏂囦歡錛?/span>.dsw銆?/span>.ncb銆?/span>.opt銆?/span>.aps銆?/span>.clw銆?/span>. plg鏂囦歡浠ュ強Debug銆?/span>Release鐩綍涓嬬殑鎵鏈夋枃浠躲?/font>

3) 褰撲綘鐨?/span>Workspace涓寘鍚涓?/span>Project鐨勬椂鍊欙紝浣犲彲鑳戒笉鑳界洿瑙傚湴銆佷竴鐪肩湅鍑烘潵鍝釜鏄綋鍓嶉」鐩傚彲浠ュ涓嬭緗細Tools->Options->Format錛岀劧鍚庡湪Category涓夋嫨Workspace window錛屾敼鍙樺叾榛樿鐨勫瓧浣擄紙姣斿璁炬垚Fixedsys錛夊氨琛屼簡銆?/font>

4) 濡備綍緇欏凡鏈夌殑Project鏀瑰悕瀛楋紵灝嗚Project鍏蟲帀銆傜劧鍚庝互鏂囨湰鏍煎紡鎵撳紑.dsp鏂囦歡錛屾浛鎹㈠師鏉ョ殑Project鍚嶅瓧鍗沖彲銆?/font>

5) VC6瀵圭被鎴愬憳鐨勬櫤鑳芥彁紺哄姛鑳藉緢鏈夌敤錛屼絾鏈夋椂鍊欎細澶辯伒銆備綘鍙互鍏堝叧鎺夐」鐩紝灝?/span>.clw鍜?/span>.ncb鍒犳帀錛岀劧鍚庨噸鏂版墦寮欏圭洰錛岀偣鍑昏彍鍗曢」View->ClassWizard錛屽湪寮瑰嚭鐨勫璇濇涓寜涓涓?#8220;Add All”鎸夐挳錛涢噸鏂?/span>Rebuild All銆傚簲璇ュ彲浠ヨВ鍐抽棶棰樸?/font>

闄?

VC鏂囦歡鎵╁睍鍚嶈В璇誨ぇ鍏?/font>

.APS錛氬瓨鏀句簩榪涘埗璧勬簮鐨勪腑闂存枃浠訛紝VC鎶婂綋鍓嶈祫婧愭枃浠惰漿鎹㈡垚浜岃繘鍒舵牸寮忥紝騫跺瓨鏀懼湪APS鏂囦歡涓紝浠ュ姞蹇祫婧愯杞介熷害銆傝祫婧愯緟鍔╂枃浠躲?/font>

.BMP錛氫綅鍥捐祫婧愭枃浠躲?/font>

.BSC錛氭祻瑙堜俊鎭枃浠訛紝鐢辨祻瑙堜俊鎭淮鎶ゅ伐鍏鳳紙BSCMAKE錛変粠鍘熷嫻忚淇℃伅鏂囦歡錛?SBR錛変腑鐢熸垚錛孊SC鏂囦歡鍙互鐢ㄦ潵鍦ㄦ簮浠g爜緙栬緫紿楀彛涓繘琛屽揩閫熷畾浣嶃傜敤浜庢祻瑙堥」鐩俊鎭殑錛屽鏋滅敤source brower鐨勮瘽灝卞繀欏繪湁榪欎釜鏂囦歡銆傚彲浠ュ湪project options閲屽幓鎺塆enerate Browse Info File錛岃繖鏍峰彲浠ュ姞蹇紪璇戣繘搴︺?/font>

.C錛氱敤C璇█緙栧啓鐨勬簮浠g爜鏂囦歡銆?/font>

.CLW錛欳lassWizard鐢熸垚鐨勭敤鏉ュ瓨鏀劇被淇℃伅鐨勬枃浠躲俢lasswizard淇℃伅鏂囦歡錛宨ni鏂囦歡鐨勬牸寮忋?/font>

.CNT錛氱敤鏉ュ畾涔夊府鍔╂枃浠朵腑“Contents”鐨勭粨鏋勩?/font>

.CPP鎴?CXX錛氱敤C++璇█緙栧啓鐨勬簮浠g爜鏂囦歡銆?/font>

.CUR錛氬厜鏍囪祫婧愭枃浠躲?/font>

.DEF錛氭ā鍧楀畾涔夋枃浠訛紝渚涚敓鎴愬姩鎬侀摼鎺ュ簱鏃朵嬌鐢ㄣ?/font>

.DLG錛氬畾涔夊璇濇璧勬簮鐨勭嫭绔嬫枃浠躲傝繖縐嶆枃浠跺浜嶸C宸ョ▼鏉ヨ騫墮潪蹇呴渶錛屽洜涓篤C涓鑸妸瀵硅瘽妗嗚祫婧愭斁鍦?RC璧勬簮瀹氫箟鏂囦歡涓?/font>

.DSP錛歏C寮鍙戠幆澧冪敓鎴愮殑宸ョ▼鏂囦歡錛孷C4鍙婁互鍓嶇増鏈嬌鐢∕AK鏂囦歡鏉ュ畾涔夊伐紼嬨傞」鐩枃浠訛紝鏂囨湰鏍煎紡銆?/font>

.DSW錛歏C寮鍙戠幆澧冪敓鎴愮殑WorkSpace鏂囦歡錛岀敤鏉ユ妸澶氫釜宸ョ▼緇勭粐鍒頒竴涓猈orkSpace涓傚伐浣滃尯鏂囦歡錛屼笌.dsp宸笉澶氥?/font>

.EXP錛氱敱LIB宸ュ叿浠嶥EF鏂囦歡鐢熸垚鐨勮緭鍑烘枃浠訛紝鍏朵腑鍖呭惈浜嗗嚱鏁板拰鏁版嵁欏圭洰鐨勮緭鍑轟俊鎭紝LINK宸ュ叿灝嗕嬌鐢‥XP鏂囦歡鏉ュ垱寤哄姩鎬侀摼鎺ュ簱銆傚彧鏈夊湪緙栬瘧DLL鏃舵墠浼氱敓鎴愶紝璁板綍浜咲LL鏂囦歡涓殑涓浜涗俊鎭?/font>

.H銆?HPP鎴?HXX錛氱敤C/C++璇█緙栧啓鐨勫ご鏂囦歡錛岄氬父鐢ㄦ潵瀹氫箟鏁版嵁綾誨瀷錛屽0鏄庡彉閲忋佸嚱鏁般佺粨鏋勫拰綾匯?/font>

.HLP錛歐indows甯姪鏂囦歡銆?/font>

.HM錛氬湪Help宸ョ▼涓紝璇ユ枃浠跺畾涔変簡甯姪鏂囦歡涓庡璇濇銆佽彍鍗曟垨鍏跺畠璧勬簮涔嬮棿ID鍊肩殑瀵瑰簲鍏崇郴銆?/font>

.HPJ錛氱敱Help Workshop鐢熸垚鐨凥elp宸ョ▼鏂囦歡錛岀敤鏉ユ帶鍒禜elp鏂囦歡鐨勭敓鎴愯繃紼嬨?/font>

.HPG錛岀敓鎴愬府鍔╃殑鏂囦歡鐨勫伐紼嬨?/font>

.ICO錛氬浘鏍囪祫婧愭枃浠躲?/font>

.ILK錛氳繛鎺ヨ繃紼嬩腑鐢熸垚鐨勪竴縐嶄腑闂存枃浠訛紝鍙緵LINK宸ュ叿浣跨敤銆?/font>

.INI錛氶厤緗枃浠躲?/font>

.LIB錛氬簱鏂囦歡錛孡INK宸ュ叿灝嗕嬌鐢ㄥ畠鏉ヨ繛鎺ュ悇縐嶈緭鍏ュ簱錛屼互渚挎渶緇堢敓鎴怑XE鏂囦歡銆?/font>

.LIC錛氱敤鎴瘋鍙瘉涔︽枃浠訛紝浣跨敤鏌愪簺ActiveX鎺т歡鏃墮渶瑕佽鏂囦歡銆?/font>

.MAK錛氬嵆MAKE鏂囦歡錛孷C4鍙婁互鍓嶇増鏈嬌鐢ㄧ殑宸ョ▼鏂囦歡錛岀敤鏉ユ寚瀹氬浣曞緩绔嬩竴涓伐紼嬶紝VC6鎶奙AK鏂囦歡杞崲鎴怐SP鏂囦歡鏉ュ鐞嗐?/font>

.MAP錛氱敱LINK宸ュ叿鐢熸垚鐨勪竴縐嶆枃鏈枃浠訛紝鍏朵腑鍖呭惈鏈夎榪炴帴鐨勭▼搴忕殑鏌愪簺淇℃伅錛屼緥濡傜▼搴忎腑鐨勭粍淇℃伅鍜屽叕鍏辯鍙蜂俊鎭瓑銆傛墽琛屾枃浠剁殑鏄犲儚淇℃伅璁板綍鏂囦歡銆?/font>

.MDP錛氭棫鐗堟湰鐨勯」鐩枃浠訛紝鐩稿綋浜?dsp

.NCB錛歂CB鏄?#8220;No Compile Browser”鐨勭緝鍐欙紝鍏朵腑瀛樻斁浜嗕緵ClassView銆乄izardBar鍜孋omponent Gallery浣跨敤鐨勪俊鎭紝鐢盫C寮鍙戠幆澧冭嚜鍔ㄧ敓鎴愩傛棤緙栬瘧嫻忚鏂囦歡銆傚綋鑷姩瀹屾垚鍔熻兘鍑洪棶棰樻椂鍙互鍒犻櫎姝ゆ枃浠躲傜紪璇戝伐紼嬪悗浼氳嚜鍔ㄧ敓鎴愩?/font>

.OBJ錛氱敱緙栬瘧鍣ㄦ垨姹囩紪宸ュ叿鐢熸垚鐨勭洰鏍囨枃浠訛紝鏄ā鍧楃殑浜岃繘鍒朵腑闂存枃浠躲?/font>

.ODL錛氱敤瀵硅薄鎻忚堪璇█緙栧啓鐨勬簮浠g爜鏂囦歡錛孷C鐢ㄥ畠鏉ョ敓鎴怲LB鏂囦歡銆?/font>

.OLB錛氬甫鏈夌被鍨嬪簱璧勬簮鐨勪竴縐嶇壒孌婄殑鍔ㄦ侀摼鎺ュ簱錛屼篃鍙璞″簱鏂囦歡銆?/font>

.OPT錛歏C寮鍙戠幆澧冭嚜鍔ㄧ敓鎴愮殑鐢ㄦ潵瀛樻斁WorkSpace涓悇縐嶉夐」鐨勬枃浠躲傚伐紼嬪叧浜庡紑鍙戠幆澧冪殑鍙傛暟鏂囦歡銆傚宸ュ叿鏉′綅緗俊鎭瓑銆?/font>

.PBI銆?PBO鍜?PBT錛氱敱VC鐨勬ц兘鍒嗘瀽宸ュ叿PROFILE鐢熸垚騫朵嬌鐢ㄧ殑涓夌鏂囦歡銆?/font>

.PCH錛氶緙栬瘧澶存枃浠訛紝姣旇緝澶э紝鐢辯紪璇戝櫒鍦ㄥ緩绔嬪伐紼嬫椂鑷姩鐢熸垚錛屽叾涓瓨鏀炬湁宸ョ▼涓凡緇忕紪璇戠殑閮ㄥ垎浠g爜錛屽湪浠ュ悗寤虹珛宸ョ▼鏃朵笉鍐嶉噸鏂扮紪璇戣繖浜涗唬鐮侊紝浠ヤ究鍔犲揩鏁翠釜緙栬瘧榪囩▼鐨勯熷害銆?/font>

.PDB錛氱▼搴忔暟鎹簱鏂囦歡錛屽湪寤虹珛宸ョ▼鏃惰嚜鍔ㄧ敓鎴愶紝鍏朵腑瀛樻斁紼嬪簭鐨勫悇縐嶄俊鎭紝鐢ㄦ潵鍔犲揩璋冭瘯榪囩▼鐨勯熷害銆傝褰曚簡紼嬪簭鏈夊叧鐨勪竴浜涙暟鎹拰璋冭瘯淇℃伅銆?/font>

.PLG錛氱紪璇戜俊鎭枃浠訛紝緙栬瘧鏃剁殑error鍜寃arning淇℃伅鏂囦歡銆?/font>

.RC錛氳祫婧愬畾涔夋枃浠躲?/font>

.RC2錛氳祫婧愬畾涔夋枃浠訛紝渚涗竴浜涚壒孌婃儏鍐典笅浣跨敤銆?/font>

.REG錛氭敞鍐岃〃淇℃伅鏂囦歡銆?/font>

.RES錛氫簩榪涘埗璧勬簮鏂囦歡錛岃祫婧愮紪璇戝櫒緙栬瘧璧勬簮瀹氫箟鏂囦歡鍚庡嵆鐢熸垚RES鏂囦歡銆?/font>

.RTF錛歊ich Text Format錛堜赴瀵屾枃鏈牸寮忥級鏂囨。錛屽彲鐢盬ord鎴栧啓瀛楁澘鏉ュ垱寤猴紝甯歌鐢ㄦ潵鐢熸垚Help鏂囦歡銆?/font>

.SBR錛歏C緙栬瘧鍣ㄤ負姣忎釜OBJ鏂囦歡鐢熸垚鐨勫師濮嬫祻瑙堜俊鎭枃浠訛紝嫻忚淇℃伅緇存姢宸ュ叿錛圔SCMAKE錛夊皢鍒╃敤SBR鏂囦歡鏉ョ敓鎴怋SC鏂囦歡銆?/font>

.TLB錛歄LE搴撴枃浠訛紝鍏朵腑瀛樻斁浜哋LE鑷姩鍖栧璞$殑鏁版嵁綾誨瀷銆佹ā鍧楀拰鎺ュ彛瀹氫箟錛岃嚜鍔ㄥ寲鏈嶅姟鍣ㄩ氳繃TLB鏂囦歡灝辮兘浜嗚В鑷姩鍖栧璞$殑浣跨敤鏂規硶銆?/font>

.WAV錛氬0闊寵祫婧愭枃浠躲?/font>



]]>
Select妯″瀷http://www.shnenglu.com/xpzhou/archive/2007/04/25/22786.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Wed, 25 Apr 2007 01:09:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/04/25/22786.htmlhttp://www.shnenglu.com/xpzhou/comments/22786.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/04/25/22786.html#Feedback2http://www.shnenglu.com/xpzhou/comments/commentRss/22786.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/22786.html濂楁帴瀛楁ā寮忥細闃誨濂楁帴瀛楀拰闈為樆濉炲鎺ュ瓧銆傛垨鑰呭彨鍚屾濂楁帴瀛楀拰寮傛濂楁帴瀛椼?br>濂楁帴瀛楁ā鍨嬶細鎻忚堪濡備綍瀵瑰鎺ュ瓧鐨処/O琛屼負榪涜綆$悊銆?br>Winsock鎻愪緵鐨処/O妯″瀷涓鍏辨湁浜旂錛?br>select,WSAAsyncSelect,WSAEventSelect,Overlapped,Completion銆備粖澶╁厛璁茶Вselect銆?br>
1錛歴elect妯″瀷錛堥夋嫨妯″瀷錛?br>鍏堢湅涓涓嬩笅闈㈢殑榪欏彞浠g爜錛?br>int iResult = recv(s, buffer,1024);
榪欐槸鐢ㄦ潵鎺ユ敹鏁版嵁鐨勶紝鍦ㄩ粯璁ょ殑闃誨妯″紡涓嬬殑濂楁帴瀛楅噷錛宺ecv浼氶樆濉炲湪閭i噷錛岀洿鍒板鎺ュ瓧榪炴帴涓婃湁鏁版嵁鍙錛屾妸鏁版嵁璇誨埌buffer閲屽悗recv鍑芥暟鎵嶄細榪斿洖錛屼笉鐒跺氨浼氫竴鐩撮樆濉炲湪閭i噷銆傚湪鍗曠嚎紼嬬殑紼嬪簭閲屽嚭鐜拌繖縐嶆儏鍐典細瀵艱嚧涓葷嚎紼嬶紙鍗曠嚎紼嬬▼搴忛噷鍙湁涓涓粯璁ょ殑涓葷嚎紼嬶級琚樆濉?榪欐牱鏁翠釜紼嬪簭琚攣姝誨湪榪欓噷錛屽鏋滄案榪滄病鏁版嵁鍙戦佽繃鏉ワ紝閭d箞紼嬪簭灝變細琚案榪滈攣姝匯傝繖涓棶棰樺彲浠ョ敤澶氱嚎紼嬭В鍐籌紝浣嗘槸鍦ㄦ湁澶氫釜濂楁帴瀛楄繛鎺ョ殑鎯呭喌涓嬶紝榪欎笉鏄竴涓ソ鐨勯夋嫨錛屾墿灞曟у緢宸係elect妯″瀷灝辨槸涓轟簡瑙e喅榪欎釜闂鑰屽嚭鐜扮殑銆?br>鍐嶇湅浠g爜錛?br>
int iResult = ioctlsocket(s, FIOBIO, (unsigned long *)&ul);
iResult = recv(s, buffer,1024);

榪欎竴嬈ecv鐨勮皟鐢ㄤ笉綆″鎺ュ瓧榪炴帴涓婃湁娌℃湁鏁版嵁鍙互鎺ユ敹閮戒細椹笂榪斿洖銆傚師鍥犲氨鍦ㄤ簬鎴戜滑鐢╥octlsocket鎶婂鎺ュ瓧璁劇疆涓洪潪闃誨妯″紡浜嗐備笉榪囦綘璺熻釜涓涓嬪氨浼氬彂鐜幫紝鍦ㄦ病鏈夋暟鎹殑鎯呭喌涓嬶紝recv紜疄鏄┈涓婅繑鍥炰簡錛屼絾鏄篃榪斿洖浜嗕竴涓敊璇細WSAEWOULDBLOCK錛屾剰鎬濆氨鏄姹傜殑鎿嶄綔娌℃湁鎴愬姛瀹屾垚銆傜湅鍒拌繖閲屽緢澶氫漢鍙兘浼氳錛岄偅涔堝氨閲嶅璋冪敤recv騫舵鏌ヨ繑鍥炲鹼紝鐩村埌鎴愬姛涓烘錛屼絾鏄繖鏍峰仛鏁堢巼寰堟垚闂錛屽紑閿澶ぇ銆?br>鎰熻阿澶╂墠鐨勫井杞伐紼嬪笀鍚э紝浠栦滑緇欐垜浠彁渚涗簡濂界殑瑙e喅鍔炴硶銆?br>鍏堢湅鐪媠elect鍑芥暟
int select(
int nfds,
fd_set FAR *readfds,
fd_set FAR *writefds,
fd_set FAR *exceptfds,
const struct timeval FAR *timeout
);
絎竴涓弬鏁頒笉瑕佺錛屼細琚郴緇熷拷鐣ョ殑銆傜浜屼釜鍙傛暟鏄敤鏉ユ鏌ュ鎺ュ瓧鍙鎬э紝涔熷氨璇存鏌ュ鎺ュ瓧涓婃槸鍚︽湁鏁版嵁鍙錛屽悓鏍鳳紝絎笁涓弬鏁扮敤鏉ユ鏌ユ暟鎹槸鍚﹀彲浠ュ彂鍑恒傛渶鍚庝竴涓槸媯鏌ユ槸鍚︽湁甯﹀鏁版嵁鍙鍙栥?br>鍙傛暟璇︾粏鐨勬剰鎬濊鍘葷湅MSDN錛岃繖閲岄檺浜庣瘒騫呬笉璇︾粏瑙i噴浜嗐?br>鏈鍚庝竴涓弬鏁版槸鐢ㄦ潵璁劇疆select絳夊緟澶氫箙鐨勶紝鏄釜緇撴瀯錛?br>

struct timeval {
long tv_sec; // seconds
long tv_usec; // and microseconds
};
濡傛灉灝嗚繖涓粨鏋勮緗負(0,0)錛岄偅涔坰elect鍑芥暟浼氶┈涓婅繑鍥炪?br>璇翠簡榪欎箞涔咃紝select鐨勪綔鐢ㄥ埌搴曟槸浠涔堬紵
浠栫殑浣滅敤灝辨槸錛氶槻姝㈠湪鍦ㄩ樆濉炴ā寮忕殑濂楁帴瀛楅噷琚攣姝伙紝閬垮厤鍦ㄩ潪闃誨濂楁帴瀛楅噷閲嶅媯鏌SAEWOULDBLOCK閿欒銆?br>浠栫殑宸ヤ綔嫻佺▼濡備笅錛?br>1錛氱敤FD_ZERO瀹忔潵鍒濆鍖栨垜浠劅鍏磋叮鐨刦d_set錛屼篃灝辨槸select鍑芥暟鐨勭浜屼笁鍥涗釜鍙傛暟銆?br>2錛氱敤FD_SET瀹忔潵灝嗗鎺ュ瓧鍙ユ焺鍒嗛厤緇欑浉搴旂殑fd_set銆?br>3錛氳皟鐢╯elect鍑芥暟銆?br>4錛氱敤FD_ISSET瀵瑰鎺ュ瓧鍙ユ焺榪涜媯鏌ワ紝濡傛灉鎴戜滑鎵鍏蟲敞鐨勯偅涓鎺ュ瓧鍙ユ焺浠嶇劧鍦ㄥ紑濮嬪垎閰嶇殑閭d釜fd_set閲岋紝閭d箞璇存槑椹笂鍙互榪涜鐩稿簲鐨処O鎿嶄綔銆傛瘮濡備竴涓垎閰嶇粰select絎竴涓弬鏁扮殑濂楁帴瀛楀彞鏌勫湪select榪斿洖鍚庝粛鐒跺湪select絎竴涓弬鏁扮殑fd_set閲岋紝閭d箞璇存槑褰撳墠鏁版嵁宸茬粡鏉ヤ簡錛岄┈涓婂彲浠ヨ鍙栨垚鍔熻屼笉浼氳闃誨銆?br>
涓嬮潰緇欏嚭涓涓畝鍗曠殑select妯″瀷鐨勬湇鍔$濂楁帴瀛椼?br>
#include “iostream.h”
#include “winsock2.h”
#include “windows.h”


#define InternetAddr "127.0.0.1"
#define iPort 5055

#pragma comment(lib, "ws2_32.lib")


void main()
{
銆銆銆銆WSADATA wsa;
銆銆銆銆WSAStartup(MAKEWORD(2,2), &wsa);
銆銆銆銆
銆銆銆銆SOCKET fdServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
銆銆銆銆
銆銆銆銆struct sockaddr_in server;
銆銆銆銆server.sin_family = AF_INET;
銆銆銆銆server.sin_addr.s_addr = inet_addr(InternetAddr);
銆銆銆銆server.sin_port = htons(iPort);
銆銆銆銆
銆銆銆銆int ret = bind(fdServer, (sockaddr*)&server, sizeof(server));
銆銆銆銆ret = listen(fdServer, 4);


銆銆銆銆SOCKET AcceptSocket;
銆銆銆銆fd_set fdread;
銆銆銆銆timeval tv;
銆銆銆銆int nSize;

銆銆銆銆while(1)
銆銆銆銆{
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆FD_ZERO(&fdread);//鍒濆鍖杅d_set
銆銆銆銆銆銆銆銆FD_SET(fdServer, &fdread);//鍒嗛厤濂楁帴瀛楀彞鏌勫埌鐩稿簲鐨刦d_set
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆tv.tv_sec = 2;//榪欓噷鎴戜滑鎵撶畻璁﹕elect絳夊緟涓ょ鍚庤繑鍥烇紝閬垮厤琚攣姝伙紝涔熼伩鍏嶉┈涓婅繑鍥?br>銆銆銆銆銆銆銆銆tv.tv_usec = 0;
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆select(0, &fdread, NULL, NULL, &tv);
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆nSize = sizeof(server);
銆銆銆銆銆銆銆銆if (FD_ISSET(fdServer, &fdread))//濡傛灉濂楁帴瀛楀彞鏌勮繕鍦╢d_set閲岋紝璇存槑瀹㈡埛绔凡緇忔湁connect鐨勮姹傚彂榪囨潵浜嗭紝椹笂鍙互accept鎴愬姛
銆銆銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆銆銆銆銆AcceptSocket = accept(fdServer,( sockaddr*) &server, &nSize);
銆銆銆銆銆銆銆銆銆銆銆銆break;
銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆
銆銆銆銆銆銆銆銆else//榪樻病鏈夊鎴風鐨刢onnect璇鋒眰錛屾垜浠彲浠ュ幓鍋氬埆鐨勪簨錛岄伩鍏嶅儚娌℃湁鐢╯elect鏂瑰紡鐨勯樆濉炲鎺ュ瓧紼嬪簭琚攣姝葷殑鎯呭喌錛屽鏋滄病鐢╯elect,褰撶▼搴忚繍琛屽埌accept鐨勬椂鍊欏鎴風鎭板ソ娌℃湁connect璇鋒眰錛岄偅涔堢▼搴忓氨浼氳閿佹錛屽仛涓嶄簡浠諱綍浜嬫儏
銆銆銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆銆銆銆銆//do something
銆銆銆銆銆銆銆銆銆銆銆銆::MessageBox(NULL, "waiting...", "recv", MB_ICONINFORMATION);//鍒殑浜嬪仛瀹屽悗錛岀戶緇幓媯鏌ユ槸鍚︽湁瀹㈡埛绔繛鎺ヨ姹?br>銆銆銆銆銆銆銆銆}
銆銆銆銆}

銆銆銆銆char buffer[128];
銆銆銆銆ZeroMemory(buffer, 128);

銆銆銆銆ret = recv(AcceptSocket,buffer,128,0);//榪欓噷鍚屾牱鍙互鐢╯elect錛岀敤娉曞拰涓婇潰涓鏍?br>
銆銆銆銆::MessageBox(NULL, buffer, "recv", MB_ICONINFORMATION);

銆銆銆銆closesocket(AcceptSocket);
銆銆銆銆WSACleanup();
銆銆銆銆
銆銆銆銆return;

}

鍩烘湰涓婂氨榪欐牱錛屼釜浜烘劅瑙塻elect妯″瀷鐢ㄥ涓嶆槸寰堝ぇ錛屾垜鍙敤榪囦竴嬈★紝鍘誨勾鍐欑鍙f壂鎻忓櫒鐨勬椂鍊欑敤select鏉ユ鏌ヨ秴鏃躲?br>鎰熻璁插緱涓嶆槸寰堟竻妤氾紝铏界劧涓滆タ鎴戝緢鏄庣櫧錛屼絾鏄璁茶В鍑烘潵璁茶В寰楀緢娓呮鐪熶笉瀹規槗銆?br>涓嶇煡閬撳ぇ瀹惰兘涓嶈兘鐪嬫噦錛屽鏋滅湅寰楄繃紼嬩腑鏈変粈涔堥棶棰樺氨闂惂銆?br>

]]>
WinSock瀛︿範絎旇http://www.shnenglu.com/xpzhou/archive/2007/04/25/22785.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Wed, 25 Apr 2007 01:08:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/04/25/22785.htmlhttp://www.shnenglu.com/xpzhou/comments/22785.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/04/25/22785.html#Feedback1http://www.shnenglu.com/xpzhou/comments/commentRss/22785.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/22785.html涓巗ocket鏈夊叧鐨勪竴浜涘嚱鏁頒粙緇?br>
1銆佽鍙栧綋鍓嶉敊璇鹼細姣忔鍙戠敓閿欒鏃訛紝濡傛灉瑕佸鍏蜂綋闂榪涜澶勭悊錛岄偅涔堝氨搴旇璋冪敤榪欎釜鍑芥暟鍙栧緱閿欒浠g爜銆?
      int  WSAGetLastError(void );
#define h_errno   WSAGetLastError()
閿欒鍊艱鑷繁闃呰Winsock2.h銆?br>
2銆佸皢涓繪満鐨剈nsigned long鍊艱漿鎹負緗戠粶瀛楄妭欏哄簭(32浣?錛氫負浠涔堣榪欐牱鍋氬憿錛熷洜涓轟笉鍚岀殑璁$畻鏈轟嬌鐢ㄤ笉鍚岀殑瀛楄妭欏哄簭瀛樺偍鏁版嵁銆傚洜姝や換浣曚粠Winsock鍑芥暟瀵笽P鍦板潃鍜岀鍙e彿鐨勫紩鐢ㄥ拰浼犵粰Winsock鍑芥暟鐨処P鍦板潃鍜岀鍙e彿鍧囨椂鎸夌収緗戠粶欏哄簭緇勭粐鐨勩?br>
      u_long  htonl(u_long hostlong);
涓句緥錛歨tonl(0)=0
htonl(80)= 1342177280
3銆佸皢unsigned long鏁頒粠緗戠粶瀛楄妭欏哄簭杞崲浣嶄富鏈哄瓧鑺傞『搴忥紝鏄笂闈㈠嚱鏁扮殑閫嗗嚱鏁般?
      u_long  ntohl(u_long netlong);
涓句緥錛歯tohl(0)=0
ntohl(1342177280)= 80
4銆佸皢涓繪満鐨剈nsigned short鍊艱漿鎹負緗戠粶瀛楄妭欏哄簭(16浣?錛氬師鍥犲悓2錛?
      u_short  htons(u_short hostshort);
涓句緥錛歨tonl(0)=0
htonl(80)= 20480
5銆佸皢unsigned short鏁頒粠緗戠粶瀛楄妭欏哄簭杞崲浣嶄富鏈哄瓧鑺傞『搴忥紝鏄笂闈㈠嚱鏁扮殑閫嗗嚱鏁般?
      u_short  ntohs(u_short netshort);
涓句緥錛歯tohs(0)=0
ntohsl(20480)= 80
6銆佸皢鐢ㄧ偣鍒嗗壊鐨処P鍦板潃杞崲浣嶄竴涓猧n_addr緇撴瀯鐨勫湴鍧錛岃繖涓粨鏋勭殑瀹氫箟瑙佺瑪璁?涓)錛屽疄闄呬笂灝辨槸涓涓猽nsigned long鍊箋傝綆楁満鍐呴儴澶勭悊IP鍦板潃鍙槸涓嶈璇嗗192.1.8.84涔嬬被鐨勬暟鎹?
      unsigned long  inet_addr( const char FAR * cp );
涓句緥錛歩net_addr("192.1.8.84")=1409810880
inet_addr("127.0.0.1")= 16777343
濡傛灉鍙戠敓閿欒錛屽嚱鏁拌繑鍥濱NADDR_NONE鍊箋?br>
7銆佸皢緗戠粶鍦板潃杞崲浣嶇敤鐐瑰垎鍓茬殑IP鍦板潃錛屾槸涓婇潰鍑芥暟鐨勯嗗嚱鏁般?
      char FAR *  inet_ntoa( struct in_addr in );
涓句緥錛歝har * ipaddr=NULL;
char addr[20];
in_addr inaddr;
inaddr. s_addr=16777343;
ipaddr= inet_ntoa(inaddr);
strcpy(addr,ipaddr); 
榪欐牱addr鐨勫煎氨鍙樹負127.0.0.1銆?br>娉ㄦ剰鎰忎笉瑕佷慨鏀硅繑鍥炲兼垨鑰呰繘琛岄噴鏀懼姩浣溿傚鏋滃嚱鏁板け璐ュ氨浼氳繑鍥濶ULL鍊箋?br>
8銆佽幏鍙栧鎺ュ瓧鐨勬湰鍦板湴鍧緇撴瀯錛?
      int  getsockname(SOCKET s, struct sockaddr FAR * name, int FAR * namelen );
s涓哄鎺ュ瓧
name涓哄嚱鏁拌皟鐢ㄥ悗鑾峰緱鐨勫湴鍧鍊?
namelen涓虹紦鍐插尯鐨勫ぇ灝忋?
9銆佽幏鍙栦笌濂楁帴瀛楃浉榪炵殑绔湴鍧緇撴瀯錛?br>
      int  getpeername(SOCKET s, struct sockaddr FAR * name, int FAR * namelen );
s涓哄鎺ュ瓧
name涓哄嚱鏁拌皟鐢ㄥ悗鑾峰緱鐨勭鍦板潃鍊?
namelen涓虹紦鍐插尯鐨勫ぇ灝忋?
10銆佽幏鍙栬綆楁満鍚嶏細
      int  gethostname( char FAR * name, int namelen );
name鏄瓨鏀捐綆楁満鍚嶇殑緙撳啿鍖?
namelen鏄紦鍐插尯鐨勫ぇ灝?
鐢ㄦ硶錛?
char szName[255];
memset(szName,0,255);
if(gethostname(szName,255)==SOCKET_ERROR)
{
//閿欒澶勭悊
}
榪斿洖鍊間負錛歴zNmae="xiaojin"
11銆佹牴鎹綆楁満鍚嶈幏鍙栦富鏈哄湴鍧錛?
      struct hostent FAR *  gethostbyname( const char FAR * name );
name涓鴻綆楁満鍚嶃?
鐢ㄦ硶錛?
hostent * host;
char* ip;
host= gethostbyname("xiaojin");
if(host->h_addr_list[0])
{
struct in_addr addr;
memmove(&addr, host->h_addr_list[0]錛?);
//鑾峰緱鏍囧噯IP鍦板潃
ip=inet_ ntoa (addr);
}
榪斿洖鍊間負錛歨ostent->h_name="xiaojin"
hostent->h_addrtype=2    //AF_INET
hostent->length=4
ip="127.0.0.1"
Winsock 鐨処/O鎿嶄綔錛?/strong>

1銆?涓ょI/O妯″紡
  • 闃誨妯″紡錛氭墽琛孖/O鎿嶄綔瀹屾垚鍓嶄細涓鐩磋繘琛岀瓑寰咃紝涓嶄細灝嗘帶鍒舵潈浜ょ粰紼嬪簭銆傚鎺ュ瓧 榛樿涓洪樆濉炴ā寮忋傚彲浠ラ氳繃澶氱嚎紼嬫妧鏈繘琛屽鐞嗐?
  • 闈為樆濉炴ā寮忥細鎵цI/O鎿嶄綔鏃訛紝Winsock鍑芥暟浼氳繑鍥炲茍浜ゅ嚭鎺у埗鏉冦傝繖縐嶆ā寮忎嬌鐢?璧鋒潵姣旇緝澶嶆潅錛屽洜涓哄嚱鏁板湪娌℃湁榪愯瀹屾垚灝辮繘琛岃繑鍥烇紝浼氫笉鏂湴榪斿洖 WSAEWOULDBLOCK閿欒銆備絾鍔熻兘寮哄ぇ銆?/li>
涓轟簡瑙e喅榪欎釜闂錛屾彁鍑轟簡榪涜I/O鎿嶄綔鐨勪竴浜汭/O妯″瀷,涓嬮潰浠嬬粛鏈甯歌鐨勪笁縐嶏細

2銆乻elect妯″瀷錛?br>
銆銆閫氳繃璋冪敤select鍑芥暟鍙互紜畾涓涓垨澶氫釜濂楁帴瀛楃殑鐘舵侊紝鍒ゆ柇濂楁帴瀛椾笂鏄惁鏈夋暟鎹紝鎴?br>鑰呰兘鍚﹀悜涓涓鎺ュ瓧鍐欏叆鏁版嵁銆?
      int  select( int nfds, fd_set FAR * readfds, fd_set FAR * writefds, 
fd_set FAR *exceptfds, const struct timeval FAR * timeout );
鈼嗗厛鏉ョ湅鐪嬫秹鍙婂埌鐨勭粨鏋勭殑瀹氫箟錛?br>a銆?d_set緇撴瀯錛?br>
#define FD_SETSIZE 64?
typedef struct fd_set {
u_int fd_count; /* how many are SET? */
SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
} fd_set;      
fd_count涓哄凡璁懼畾socket鐨勬暟閲?br>fd_array涓簊ocket鍒楄〃錛孎D_SETSIZE涓烘渶澶ocket鏁伴噺錛屽緩璁笉灝忎簬64銆傝繖鏄井杞緩
璁殑銆?br>
B銆乼imeval緇撴瀯錛?
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
tv_sec涓烘椂闂寸殑縐掑箋?br>tv_usec涓烘椂闂寸殑姣鍊箋?br>榪欎釜緇撴瀯涓昏鏄緗畇elect()鍑芥暟鐨勭瓑寰呭鹼紝濡傛灉灝嗚緇撴瀯璁劇疆涓?0,0)錛屽垯select()鍑芥暟
浼氱珛鍗寵繑鍥炪?br>
鈼嗗啀鏉ョ湅鐪媠elect鍑芥暟鍚勫弬鏁扮殑浣滅敤錛?
  1. nfds錛氭病鏈変換浣曠敤澶勶紝涓昏鐢ㄦ潵榪涜緋葷粺鍏煎鐢紝涓鑸緗負0銆?br>
  2. readfds錛氱瓑寰呭彲璇繪ф鏌ョ殑濂楁帴瀛楃粍銆?br>
  3. writefds錛涚瓑寰呭彲鍐欐ф鏌ョ殑濂楁帴瀛楃粍銆?br>
  4. exceptfds錛氱瓑寰呴敊璇鏌ョ殑濂楁帴瀛楃粍銆?br>
  5. timeout錛氳秴鏃舵椂闂淬?br>
  6. 鍑芥暟澶辮觸鐨勮繑鍥炲鹼細璋冪敤澶辮觸榪斿洖SOCKET_ERROR,瓚呮椂榪斿洖0銆?/li>
readfds銆亀ritefds銆乪xceptfds涓変釜鍙橀噺鑷沖皯鏈変竴涓笉涓虹┖錛屽悓鏃惰繖涓笉涓虹┖鐨勫鎺ュ瓧緇?br>縐嶈嚦灝戞湁涓涓猻ocket錛岄亾鐞嗗緢綆鍗曪紝鍚﹀垯瑕乻elect騫蹭粈涔堝憿銆?涓句緥錛氭祴璇曚竴涓鎺ュ瓧鏄惁鍙錛?
fd_set fdread;
//FD_ZERO瀹氫箟
// #define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0)
FD_ZERO(&fdread);
FD_SET(s,&fdread)錛?//鍔犲叆濂楁帴瀛楋紝璇︾粏瀹氫箟璇風湅winsock2.h
if(select(0,%fdread,NULL,NULL,NULL)>0
{
//鎴愬姛
if(FD_ISSET(s,&fread) //鏄惁瀛樺湪fread涓紝璇︾粏瀹氫箟璇風湅winsock2.h
{
//鏄彲璇葷殑
}
}

鈼咺/O鎿嶄綔鍑芥暟錛氫富瑕佺敤浜庤幏鍙栦笌濂楁帴瀛楃浉鍏崇殑鎿嶄綔鍙傛暟銆?

 int  ioctlsocket(SOCKET s, long cmd, u_long FAR * argp );     
s涓篒/O鎿嶄綔鐨勫鎺ュ瓧銆?br>cmd涓哄濂楁帴瀛楃殑鎿嶄綔鍛戒護銆?br>argp涓哄懡浠ゆ墍甯﹀弬鏁扮殑鎸囬拡銆?br>
甯歌鐨勫懡浠わ細
//紜畾濂楁帴瀛楄嚜鍔ㄨ鍏ョ殑鏁版嵁閲?
#define FIONREAD _IOR(''''f'''', 127, u_long) /* get # bytes to read */
//鍏佽鎴栫姝㈠鎺ュ瓧鐨勯潪闃誨妯″紡錛屽厑璁鎬負闈?錛岀姝負0
#define FIONBIO _IOW(''''f'''', 126, u_long) /* set/clear non-blocking i/o */
//紜畾鏄惁鎵鏈夊甫澶栨暟鎹兘宸茶璇誨叆
#define SIOCATMARK _IOR(''''s'''', 7, u_long) /* at oob mark? */
3銆乄SAAsynSelect妯″瀷錛?br>WSAAsynSelect妯″瀷涔熸槸涓涓父鐢ㄧ殑寮傛I/O妯″瀷銆傚簲鐢ㄧ▼搴忓彲浠ュ湪涓涓鎺ュ瓧涓婃帴鏀朵互
WINDOWS娑堟伅涓哄熀紜鐨勭綉緇滀簨浠墮氱煡銆傝妯″瀷鐨勫疄鐜版柟娉曟槸閫氳繃璋冪敤WSAAsynSelect鍑?br>鏁?鑷姩灝嗗鎺ュ瓧璁劇疆涓洪潪闃誨妯″紡錛屽茍鍚慦INDOWS娉ㄥ唽涓涓垨澶氫釜緗戠粶鏃墮棿錛屽茍鎻愪緵涓
涓氱煡鏃朵嬌鐢ㄧ殑紿楀彛鍙ユ焺銆傚綋娉ㄥ唽鐨勪簨浠跺彂鐢熸椂錛屽搴旂殑紿楀彛灝嗘敹鍒頒竴涓熀浜庢秷鎭殑閫氱煡銆?br>
      int  WSAAsyncSelect( SOCKET s, HWND hWnd, u_int wMsg, long lEvent);       
s涓洪渶瑕佷簨浠墮氱煡鐨勫鎺ュ瓧
hWnd涓烘帴鏀舵秷鎭殑紿楀彛鍙ユ焺
wMsg涓鴻鎺ユ敹鐨勬秷鎭?br>lEvent涓烘帺鐮侊紝鎸囧畾搴旂敤紼嬪簭鎰熷叴瓚g殑緗戠粶浜嬩歡緇勫悎錛屼富瑕佸涓嬶細
#define FD_READ_BIT 0
#define FD_READ (1 << FD_READ_BIT)
#define FD_WRITE_BIT 1
#define FD_WRITE (1 << FD_WRITE_BIT)
#define FD_OOB_BIT 2
#define FD_OOB (1 << FD_OOB_BIT)
#define FD_ACCEPT_BIT 3
#define FD_ACCEPT (1 << FD_ACCEPT_BIT)
#define FD_CONNECT_BIT 4
#define FD_CONNECT (1 << FD_CONNECT_BIT)
#define FD_CLOSE_BIT 5
#define FD_CLOSE (1 << FD_CLOSE_BIT)
鐢ㄦ硶錛氳鎺ユ敹璇誨啓閫氱煡錛?
int nResult= WSAAsyncSelect(s,hWnd,wMsg,FD_READ|FD_WRITE)錛?
if(nResult==SOCKET_ERROR)
{
//閿欒澶勭悊
}
鍙栨秷閫氱煡錛?br>
      int nResult= WSAAsyncSelect(s,hWnd,0錛?)錛?
褰撳簲鐢ㄧ▼搴忕獥鍙Wnd鏀跺埌娑堟伅鏃訛紝wMsg.wParam鍙傛暟鏍囪瘑浜嗗鎺ュ瓧錛宭Param鐨勪綆瀛楁爣鏄?br>浜嗙綉緇滀簨浠訛紝楂樺瓧鍒欏寘鍚敊璇唬鐮併?br>
4銆乄SAEventSelect妯″瀷
WSAEventSelect妯″瀷綾諱技WSAAsynSelect妯″瀷錛屼絾鏈涓昏鐨勫尯鍒槸緗戠粶浜嬩歡鍙戠敓鏃朵細琚彂
閫佸埌涓涓簨浠跺璞″彞鏌勶紝鑰屼笉鏄彂閫佸埌涓涓獥鍙c?br>
浣跨敤姝ラ濡備笅錛?br>a銆?鍒涘緩浜嬩歡瀵硅薄鏉ユ帴鏀剁綉緇滀簨浠訛細
#define WSAEVENT HANDLE
#define LPWSAEVENT LPHANDLE
WSAEVENT WSACreateEvent( void );
璇ュ嚱鏁扮殑榪斿洖鍊間負涓涓簨浠跺璞″彞鏌勶紝瀹冨叿鏈変袱縐嶅伐浣滅姸鎬侊細宸蹭紶淇?signaled)鍜屾湭浼犱俊
(nonsignaled)浠ュ強涓ょ宸ヤ綔妯″紡錛氫漢宸ラ噸璁?manual reset)鍜岃嚜鍔ㄩ噸璁?auto reset)銆傞粯璁ゆ湭
鏈紶淇$殑宸ヤ綔鐘舵佸拰浜哄伐閲嶈妯″紡銆?br>
b銆佸皢浜嬩歡瀵硅薄涓庡鎺ュ瓧鍏寵仈錛屽悓鏃舵敞鍐屼簨浠訛紝浣夸簨浠跺璞$殑宸ヤ綔鐘舵佷粠鏈紶淇¤漿鍙樻湭
宸蹭紶淇°?br>
      int  WSAEventSelect( SOCKET s,WSAEVENT hEventObject,long lNetworkEvents );  
s涓哄鎺ュ瓧
hEventObject涓哄垰鎵嶅垱寤虹殑浜嬩歡瀵硅薄鍙ユ焺
lNetworkEvents涓烘帺鐮侊紝瀹氫箟濡備笂闈㈡墍榪?br>
c銆両/O澶勭悊鍚庯紝璁劇疆浜嬩歡瀵硅薄涓烘湭浼犱俊
BOOL WSAResetEvent( WSAEVENT hEvent );

Hevent涓轟簨浠跺璞?br>
鎴愬姛榪斿洖TRUE錛屽け璐ヨ繑鍥濬ALSE銆?br>
d銆佺瓑寰呯綉緇滀簨浠舵潵瑙﹀彂浜嬩歡鍙ユ焺鐨勫伐浣滅姸鎬侊細

DWORD WSAWaitForMultipleEvents( DWORD cEvents,
const WSAEVENT FAR * lphEvents, BOOL fWaitAll,
DWORD dwTimeout, BOOL fAlertable );

lpEvent涓轟簨浠跺彞鏌勬暟緇勭殑鎸囬拡
cEvent涓轟負浜嬩歡鍙ユ焺鐨勬暟鐩紝鍏舵渶澶у間負WSA_MAXIMUM_WAIT_EVENTS 
fWaitAll鎸囧畾絳夊緟綾誨瀷錛歍RUE錛氬綋lphEvent鏁扮粍閲嶆墍鏈変簨浠跺璞″悓鏃舵湁淇″彿鏃惰繑鍥烇紱
FALSE錛氫換涓浜嬩歡鏈変俊鍙峰氨榪斿洖銆?br>dwTimeout涓虹瓑寰呰秴鏃訛紙姣錛?br>fAlertable涓烘寚瀹氬嚱鏁拌繑鍥炴椂鏄惁鎵ц瀹屾垚渚嬬▼

瀵逛簨浠舵暟緇勪腑鐨勪簨浠惰繘琛屽紩鐢ㄦ椂錛屽簲璇ョ敤WSAWaitForMultipleEvents鐨勮繑鍥炲鹼紝鍑忓幓
棰勫0鏄庡糤SA_WAIT_EVENT_0錛屽緱鍒板叿浣撶殑寮曠敤鍊箋備緥濡傦細

nIndex=WSAWaitForMultipleEvents(…);
MyEvent=EventArray[Index- WSA_WAIT_EVENT_0];

e銆佸垽鏂綉緇滀簨浠剁被鍨嬶細

int WSAEnumNetworkEvents( SOCKET s,
WSAEVENT hEventObject, LPWSANETWORKEVENTS lpNetworkEvents );

s涓哄鎺ュ瓧
hEventObject涓洪渶瑕侀噸璁劇殑浜嬩歡瀵硅薄
lpNetworkEvents涓鴻褰曠綉緇滀簨浠跺拰閿欒浠g爜錛屽叾緇撴瀯瀹氫箟濡備笅錛?/p>

typedef struct _WSANETWORKEVENTS {
long lNetworkEvents;
int iErrorCode[FD_MAX_EVENTS];
} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;

f銆佸叧闂簨浠跺璞″彞鏌勶細

BOOL WSACloseEvent(WSAEVENT hEvent);

璋冪敤鎴愬姛榪斿洖TRUE錛屽惁鍒欒繑鍥濬ALSE銆?br>



]]>涓浗榛戝緇勭粐涓庝漢鐗╁悕鍗曞畬鍏ㄦ。妗堬紙杞澆錛?http://www.shnenglu.com/xpzhou/archive/2007/04/23/22679.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Mon, 23 Apr 2007 14:16:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/04/23/22679.htmlhttp://www.shnenglu.com/xpzhou/comments/22679.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/04/23/22679.html#Feedback0http://www.shnenglu.com/xpzhou/comments/commentRss/22679.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/22679.html钁楀悕榛戝緇勭粐

鍏堜粙緇嶉浂涓夊勾涔嬪墠鐨勭粍緇囥?/strong>

瀹夊叏鐒︾偣 http://www.xfocus.net/

1999騫?鏈?6鏃ョ敱xundi鍒涚珛,鍒涘浜鴻繕鏈塹uack鍜宑asper銆傚悗鏉tardust,isno,glacier,alert7,benjurry,blackhole,eyas,flashsky,funnywei,refdom,tombkeeper,watercloud,wollf絳変漢涔熷姞鍏ヤ簡榪戞潵銆傜珯鐐逛富欏甸鏍間竴鍚戞槸寰堢畝鍗曘傝岃緇勭粐鐩墠宸茬粡鎴愪負鍥藉唴鏈鏉冨▉鐨勪俊鎭畨鍏ㄧ珯鐐癸紝涔熸槸鏈鎺ヨ繎涓栫晫鐨勪竴涓浗鍐呯粍緇囥傜洰鍓嶅浗鍐呬竴浜涙妧鏈ф瘮杈冨己鐨勬枃绔犻兘鐢變綔鑰呬翰鑷彁浜ゅ埌璇ョ綉绔欙紝鑰屽浗鍐呬竴浜涚煡鍚嶇殑鎶鏈睘涓灞炰簩鐨勯珮鎵嬮兘浼氬幓榪欓噷鐨勮鍧涖傝璁烘妧鏈殑姘涘洿榪樺彲浠ャ傝屼笖涓浜涚綉緇滃畨鍏ㄥ叕鍙鎬篃鍏蟲敞榪欓噷鐨勮鍧涖傜幇鍦ㄦ祦琛岀殑钁楀悕鎵弿宸ュ叿x-scan鐨勪綔鑰呭氨鏄緇勭粐鐨勬垚鍛樸備粠2002騫村紑濮嬶紝姣忓勾閮戒婦鍔炰竴嬈′俊鎭畨鍏ㄥ嘲浼氾紝鍚稿紩浜嗗浗鍐呭浼楀鐭ュ悕緗戠粶瀹夊叏涓撳鍏蟲敞鍙傚姞銆備細璁秹鍙婁紬澶氶鍩燂紝澶囧彈鍏蟲敞銆傚垱閫犱簡鑹ソ鐨勫鏈氦嫻佹皼鍥淬傚湪姝ょ鎰胯繖涓粍緇囪秺璧拌秺濂姐?/p>

涓浗綰㈠鑱旂洘錛堝凡瑙f暎錛塰ttp://www.cnhonker.com/

鍊熻繖涓満浼氳璇存槑涓涓嬶紝鍙湁榪欎釜綰㈠鑱旂洘鎵嶉厤鐨勪笂鏄湡姝g殑綰㈠鑱旂洘錛屽茍涓嶆槸鍥犱負浠栫敵璇蜂簡浠涔堜笓鍒╋紝鑰屾槸鍦ㄥぇ瀹剁殑鐪間腑錛屽彧鏈変粬鎵嶅彧鐪熸鐨勭孩瀹㈣仈鐩熴傝繖涓粍緇囨槸鐢眑ion鍦?000騫?2鏈堢粍寤虹殑銆傛浘鍐?001騫村甫棰嗕紬澶氫細鍛樺弬涓庝腑緹庨粦瀹㈠ぇ鎴橈紝鑰屽悕闇?#8220;姹熸箹”銆備笉榪囪繖涓椂浠f棭宸查濆幓錛屾縺鎯呯殑寰浜嬩篃璺熺潃閫濆幓錛岀暀緇欎漢浠殑鍙湁鍥炲繂銆傚湪2005騫寸殑鏈鍚庝竴澶╋紝lion鍦ㄤ富欏典笂瀹e竷姝e紡瑙f暎銆傛垨璁稿緢澶氫漢闅句互鐞嗚В鍚с備笉榪囪繖涔熻嚜鏈変漢瀹剁殑閬撶悊銆傜幇鍦ㄥ闈㈡湁N涓孩鐩燂紝鎴戜笉灞戜簬鍘誨叧娉ㄤ粬浠傚湪姝ょ紱弆ion,bkbll絳変漢銆傚sharpwinner鎴戝氨鎳掔殑璇翠粈涔堜簡銆?/p>

涓浗楣版淳 http://www.chinawill.com/

涓庣孩瀹㈣仈鐩熶竴鏍鳳紝閮芥槸2000騫存湯鍒涚珛錛屽茍涓斿湪2001騫村弬涓庝簡涓編榛戝澶ф垬銆傜珯闀夸竾娑涗篃鏄棭鏈熺殑緇胯壊鍏靛洟鎴愬憳銆傚茍涓斾篃鍙備笌浜嗗湪2000騫村墠鐨勫嚑嬈$綉緇滄垬浜夈傝嚦灝借繖涓粍緇囦緷鐒舵病鏈夊掍笅銆傝繎鍑犲勾涓茍娌℃湁浠涔堝ぇ鐨勪簨浠跺彂鐢熴傛墍浠ュ緢澶氫漢瀵逛粬閮藉凡緇忔病鏈変簡浠涔堝嵃璞°傚笇鏈涗粬浠秺璧拌秺濂姐?/p>

閭伓鍏繘鍒?http://www.eviloctal.com/

2002騫寸敱鍐拌灝佹儏(浠庝粬鐨凚LOG鐪嬪嚭鏉ワ紝浠栨槸鍜辨鏋椾漢)鍒涚珛錛屽綋鏃舵槸浠ュ皬緇勬ā寮忚繍钀ョ殑錛岃屽彂灞曞埌鐜板湪宸茬粡鎴愪負涓涓?0澶氫漢鐨勪俊鎭畨鍏ㄥ洟闃熴備富欏靛仛鐨勫緢綆鍗曪紝浣嗚鍧涘唴瀹歸潪甯鎬赴瀵岋紝娑夊強棰嗗煙浼楀錛屽湪涓嬬粡甯稿幓閭i噷涓嬭澆瀛︽湳璧勬枡錛岃鍧涚鐞嗙殑鏄垜鎵瑙佽繃鐨勮鍧涗腑鏈濂界殑銆傝屼笖璁ㄨ姘涘洿涔熷緢涓嶉敊銆傞剻浜轟笌閭i噷鐨勫嚑涓牳蹇冩垚鍛樻湁鎵鎺ヨЕ錛岄兘鏄瘮杈冪儹蹇冪殑錛岃屼笖鎶鏈兘鏄瘮杈冨己鐨勩傜鎰胯繖涓粍緇囪秺鍔炶秺濂姐傛垜瀵硅繖涓洟闃熺殑鍙戝睍鍏呮弧鏈熸湜銆?/p>

騫誨獎鏃呭洟 http://www.ph4nt0m.org/

2001騫村垱绔嬶紝鍙戝睍鍒扮幇鍦ㄧ粍緇囨垚鍛樺凡緇忚揪鍒?0浜猴紝榪戞湡緇勭粐鎺ㄥ嚭浜哤IKI騫沖彴錛坔ttp://www.secwiki.com錛夛紝鍐呭娑夊強鏃犵嚎緗戠粶錛岀梾姣掍笌鍙嶇梾姣掞紝浠ュ強榛戝鎶鏈瓑浼楀棰嗗煙銆傛墍鏈夌殑鏈嬪弸閮藉彲浠ュ埌閭i噷鍘繪秱楦︺?002騫村紑鏀句簡璁哄潧錛岀洰鍓嶈鍧涚殑鎶鏈璁烘皼鍥磋繕鏄彲浠ョ殑錛岃屼笖鐑績浜轟篃鏄緢澶氱殑銆傜浉淇¤繖涓粍緇囦篃鑳借蛋涓嬪幓銆?/p>

鐧界粏鑳?whitecell) http://www.whitecell.org/

2001騫村垱绔嬬殑涓涓函鎶鏈氦嫻佺珯鐐廣傚綋鏃舵牳蹇冩垚鍛樻湁sinister錛屾棤鑺辨灉絳変漢錛岄兘鏄浗鍐呰憲鍚嶇殑楂樻墜銆傚湪2002騫村悗灝卞叧闂簡錛岃屾渶榪戝畠鐢卞洖鏉ヤ簡銆備富欏典笌璁哄潧渚濈劧閮藉緢綆鍗曘傚笇鏈涜繖嬈″洖褰掍細甯︾粰澶у鏂扮殑姘旇薄銆?/p>

涓崕瀹夊叏緗?http://www.safechina.net/

2001騫?鏈堝垱绔嬶紝緇忚繃浜嗗嚑嬈℃敼鐗堝悗錛岄槦浼嶄篃鍙戝睍鐨勬瘮杈冨ぇ錛屾垜鎵鐔熸倝鐨勬湁yellow,Phoenix絳変漢銆傚埌鐜板湪錛岃繖涓綉绔欒繕鍦ㄦ敼鐗堜腑錛屼笉榪囪鍧涗緷鐒跺紑鏀撅紝鍦ㄨ繖閲岃繕鏄湁璁ㄨ絀洪棿鐨勩傜粍緇囧唴鐨勪漢鎶鏈篃閮芥槸涓嶉敊鐨勩傚笇鏈涜繖嬈℃敼鐗堝悗浼氭湁澶х殑鍙樺寲錛氾級銆?/p>

絎叓鍐涘洟

2000騫村乏鍙崇敱闄堜笁鍏瓙緇勭粐鎴愮珛錛屽悗緇忚繃澶氭鏀圭増銆傛垚涓轟簡涓涓猇IP鍒剁殑绔欑偣錛岃祫婧愭敹闆嗛噺榪樻槸涓嶉敊鐨勩傞剻浜虹粡甯稿幓閭i噷鎵句唬鐞嗘湇鍔″櫒錛屾洿鏂扮殑閫熷害榪樻槸鍙互鐨勩傝鍧涢噷璁ㄨ姘旀皼涓嶆槸寰堢儹鐑堛傚笇鏈涗粖鍚庡彂灞曠殑浼氭洿濂姐?/p>

鏉ヨ璇磋繖涓ゅ勾鎴愮珛鐨勯粦瀹㈢粍緇?/p>

BCT http://www.cnbct.org/

2004騫村簳鎴愮珛鐨勪竴涓笓闂ㄦ寲鎺樿剼鏈紡媧炵殑緇勭粐銆傚凡緇忓彂灞曚簡涓騫翠簡銆傚湪涓嬩笌H4K_B4N,fpx鍒版槸鏈変簺鎺ヨЕ銆傛劅瑙夎繖涓粍緇囨槸涓嶉敊鐨勶紝铏界劧娌℃湁鍋氫粈涔堝獎鍝嶅姏澶х殑浜嬫儏錛屼絾鏄繖縐嶉粯榛樼爺絀舵妧鏈殑綺劇榪樻槸鍊煎緱鍙戞壃鐨勶紝涓庨偅浜涙嫑鎽囩殑姣旓紝瑕佸ソ澶氫簡銆傜綉绔欎笂鏀墮泦浜嗕竴浜涙紡媧炶祫鏂欙紝榪欑偣鍒版槸鍋氱殑姣旇緝濂姐傚笇鏈涚戶緇姫鍔涳紝鍙戝睍鐨勮秺鏉ヨ秺濂姐?/p>

鐏嫄鎶鏈仈鐩?http://www.wrsky.com/

2004騫村緩绔嬬殑涓涓粍緇囷紝鑷村姏浜庣牬瑙h蔣浠剁殑緇勭粐銆傚浜庝粬浠粍緇囩幇鍦ㄥ緢鏈変簤璁紝涔熸浘緇忎竴搴﹂伃鍙楀埌鐚涚儓鐨勬嫆緇濇湇鍔℃敾鍑伙紝閫犳垚緗戠珯鐦棯闀垮ぇ鏁版湀錛屽埌鐜板湪鏄竴涓鍧涚郴緇熴傚浜庤繖涓粍緇囷紝鍒扮洰鍓嶄負姝㈣繕鏄湁浜夎銆傚笇鏈涜兘鏃╂棩騫蟲伅銆?/p>

榛戝鎶鏈?http://www.hackart.org/

2003騫存垚绔嬬殑緇勭粐錛屼箣鍓嶄嬌鐢ㄧ殑鏄箶瀹㈢殑鏁寸珯紼嬪簭錛屽悗鏉ュ氨鍏抽棴浜嗐備篃鏄渶榪戦噸寮鐨勭珯鐐癸紝浣跨敤鐨勬槸璁哄潧緋葷粺錛屽湪涓嬩笌閭i噷鐨勭増涓婚鑸殑鐢蜂漢鍜孞ambalaya 鏄ソ鏈嬪弸銆備粬浠殑鎶鏈繕鏄笉閿欑殑銆傜幇鍦ㄨ鍧涗漢姘旇櫧鐒朵笉鎬庝箞楂橈紝浣嗘樉鐒舵槸鑰佺珯閲嶅紑錛岀煡閬撶殑浜鴻繕涓嶅錛屽笇鏈涙棩鍚庡彲浠ユ仮澶嶅厓姘旓紝緇х畫鍙戝睍涓嬪幓銆?/p>

鍥藉唴涓夊ぇ鍟嗕笟榛戝绔欑偣

榛戝鍩哄湴

http://www.hackbase.com/ 2003騫存垚绔嬨傜珯闀塊緳鍝ャ?/p>

榛戦拱鍩哄湴 http://www.3800cc.com/ 鐢辯背鐗瑰垱绔嬬殑鍟嗕笟榛戝绔欑偣銆?/p>

鍗庡榛戝鍚岀洘 http://www.77169.com/ 2004騫寸敱鎬嫍鍒涚珛鐨勭珯鐐廣?/p>

鍏跺疄榛戝緇勭粐澶氱殑鏁頒笉鑳滄暟錛屾垜涔熷彧鏄婦鍑犱釜钁楀悕鐨勮屽凡銆?/p>

榛戝浜虹墿

涓嬮潰鏉ヨ璇翠漢鐗╁惂錛岀幇鍦ㄧ殑榛戝瓚婃潵瓚婂錛屾垜閲嶇偣浠嬬粛閭d簺涓撹憲浜庣郴緇熶笌婕忔礊鐨勯珮鎵嬶紝褰撶劧浠栦滑瀵瑰叆渚典篃鏄湁鎵閫犺鐨勩傛敞鎰忥紝榪欏茍涓嶆槸鎺掑悕錛屼笉鏄涓涓氨鏄渶鍘夊錛岃屾渶鍚庝竴涓槸榪欓噷闈㈡妧鏈渶宸殑錛屽鏋滆繖鏍鋒兂灝遍敊浜嗐傚洜涓烘湁鏃跺欐兂鐫璐瑰姴鎵浠ュ氨榪涘叆涓涓嬬墰浜虹殑BLOG浠ュ強涓浜涜鍧涘幓鐪嬶紝榪欐牱灝卞彲浠ュ鏄撹璧鋒潵錛岀煡閬撳啓璋併傚厛浠庤繖閲屾壘http://www.0x557.org/~kkqq/ 鐒跺悗鍦ㄤ粠瀹夊叏鐒︾偣鐨勬枃绔犲拰璁哄潧閲岃繕鏈夌豢鐩熷幓鎵俱?/p>

alert7 QQ:415451 email:alert7@xfocus.org http://blog.xfocus.net/index.php?blogId=12 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛屾浘緇忓湪琛ュぉ鐨勩傜簿閫歭inux鎿嶄綔緋葷粺錛屽浜巐inux涓嬬殑婕忔礊寰堟湁鐮旂┒銆?/p>

baozi(fatb) QQ:48448355 http://blog.xfocus.net/index.php?blogId=3 瀵箇indows涓巐inux涓嬬殑鍏ヤ鏡寰堢簿閫氥?/p>

CoolQ QQ:49462335 http://coolq.blogdriver.com/coolq/index.html email:qufuping@ercist.iscas.ac.cn 鎴戜篃鏄湪瀹夊叏鐒︾偣05騫寸殑宄頒細涓婅璇嗙殑浠栵紝鏄腑縐戦櫌杞歡鐮旂┒鎵鐨勫鐢燂紝瀵逛簬linux闈炲父鏈夌爺絀躲傚湪鏈鍚庝竴鏈熺殑Phrack鏉傚織涓婃湁浠栫殑鏂囩珷銆奌acking Grub for fun and profit銆嬩篃鏄湪榪欐湡鏉傚織涓彂琛ㄦ枃绔犵殑涓変綅涓浗浜轟箣涓銆傚彟澶栬憲浣滆繕鏈夈妛ays to hide files in ext2/3filesystem銆?/p>

bkbll(dumplogin) email:bkbll@cnhonker.com http://blog.0x557.org/dumplogin/ 鍘熶腑鍥界孩瀹㈣仈鐩熸牳蹇冩垚鍛橈紝涓巐ion鏇劇粡涓璧峰弬鍔犺繃涓編榛戝澶ф垬銆傚windows涓巐inux閮藉緢鏈夌爺絀躲傝憲浣滄湁銆奝OSIX瀛愮郴緇熸潈闄愭彁鍗囨紡媧炵殑鍒嗘瀽銆?/p>

flashsky QQ:16202253 email:flashsky@xfocus.org http://www.qjclub.net/blog/user1/497/index.html 瀹夊叏鐒︾偣鏍稿績鎴愬憳銆傜簿閫歸indows鎿嶄綔緋葷粺涓婄殑緙撳啿鍖烘孩鍑猴紝褰撳勾灝辨槸浠栦竴榪炲叕甯冧簡寰蔣鐨凬涓紡媧烇紝寰蔣灝辨榪樿按璐h繃瀹夊叏鐒︾偣銆傜幇灝辮亴浜庡惎鏄庢槦杈般?/p>

Flier Lu email:flier@nsfocus.com http://flier_lu.blogcn.com/ 緇跨洘鐨勯珮鎵嬶紝綺鵑歸indows鎿嶄綔緋葷粺鍐呮牳錛岃憲浣滄湁銆奙S.Net CLR鎵╁睍PE緇撴瀯鍒嗐嬨婅嚜鍔ㄩ獙璇?Windows NT 緋葷粺鏈嶅姟鎻忚堪琛ㄣ嬨奀LR 涓唬鐮佽闂畨鍏ㄦ嫻嬪疄鐜板師鐞嗐嬬瓑絳夈?/p>

funnywei QQ:25044885 email:funnywei@xfocus.org http://blog.xfocus.net/index.php?blogId=28 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛岀啛鎮墂indows鎿嶄綔緋葷粺銆傝憲浣滄湁銆奧indowsXpSp2婧㈠嚭淇濇姢銆?/p>

glacier QQ:1937435 email:glacier@xfocus.org http://blog.xfocus.net/index.php?blogId=15 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛岀簿閫歸indows緙栫▼錛岀綉緇滅紪紼嬶紝delphi絳夌瓑銆傛槸鍐版渤鏈ㄩ┈浠ュ強钁楀悕鎵弿杞歡x-scan鐨勪綔鑰呫?

icbm email:icbm@0x557.org http://blog.0x557.org/icbm/ 綺鵑歭inux鎿嶄綔緋葷粺鍐呮牳浠ュ強婕忔礊銆傚氨鑱屼簬鍚槑鏄熻景銆傜炕璇戣繃鏂囩珷銆夿uilding ptrace injecting shellcodes銆嬫槸銆婃祬鏋怢inux鍐呮牳婕忔礊銆嬬殑浣滆呫?/p>

killer QQ:6362602 email:killer@xfocus.org http://blog.xfocus.net/index.php?blogId=2 瀹夊叏鐒︾偣鐏屾按鍖虹増涓匯傜簿閫氶嗗悜宸ョ▼錛岀▼搴忕牬瑙c?/p>

pjf QQ:85863144 http://pjf.blogcn.com/ 钁楀悕鐨勬嫻嬪伐鍏穒cesword(鍐板垉)鐨勪綔鑰呫傚緢澶氱▼搴忓憳浠ュ強緙栧啓rootkit鐨勯珮鎵嬩互緇曡繃瀹冪殑媯嫻嬪伐鍏蜂負鐩爣銆傜啛鎮墂indows鎿嶄綔緋葷粺鍐呮牳銆?/p>

refdom email:refdom@xfocus.org http://blog.xfocus.net/index.php?blogId=11 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛屻婂弽鍨冨溇閭歡鎶鏈В鏋愩嬬殑浣滆呫備技涔庢浘緇忔槸綰㈠鑱旂洘鐨勪漢銆?/p>

stardust QQ:6269692 email:stardust@xfocus.org http://blog.xfocus.net/index.php?blogId=7 瀹夊叏鐒︾偣鏍稿績鎴愬憳銆傜啛鎮塴inux,綺鵑欼DS銆傝憲浣滄湁銆婁粠婕忔礊鍙婃敾鍑誨垎鏋愬埌NIDS瑙勫垯璁捐銆嬨夿ro NIDS鐨勮鍒欍嬨奡nort 2.x鏁版嵁鍖烘悳绱㈣鍒欓夐」鐨勬敼榪涖嬨夿ro NIDS鐨勫畨瑁呬笌閰嶇疆銆?/p>

sunwear QQ:47347 email:shellcoder@163.com http://blog.csdn.net/sunwear/ 閭伓鍏繘鍒舵牳蹇冩垚鍛樸傜簿閫歸indows鎿嶄綔緋葷粺鍐呮牳銆傝憲浣滄湁銆婂埄鐢∟TLDR榪涘叆RING0鐨勬柟娉曞強MGF鐥呮瘨鎶鏈垎鏋愮瑪璁般嬨婃祬鏋愭湰鏈篈PI銆嬨婃櫤鑳紸BC杈撳叆娉曟孩鍑哄垎鏋愩?/p>

swan email:swan@xfocus.org http://blog.0x557.org/swan/ 瀵圭紦鍐插尯婧㈠嚭婕忔礊寰堟湁鐮旂┒銆傛渶榪戠殑ms05051 Microsoft Windows DTC 婕忔礊鐨別xploit浣滆呭氨鏄粬銆?/p>

tombkeeper QQ:644909 http://blog.xfocus.net/index.php?blogId=9 瀹夊叏鐒︾偣鏍稿績鎴愬憳銆傜簿閫歸indows鎿嶄綔緋葷粺鍐呮牳銆傝憲浣滄湁銆婄敤Bochs璋冭瘯NTLDR銆嬨婁慨鏀筗indows SMB鐩稿叧鏈嶅姟鐨勯粯璁ょ鍙c嬬瓑絳夈傚湪鐒︾偣宄頒細涓婅鍒拌繃浠栵紝寰堝竻銆?/p>

watercloud http://blog.xfocus.net/index.php?blogId=6 瀹夊叏鐒︾偣鏍稿績鎴愬憳銆傜簿閫歸indows,linux鎿嶄綔緋葷粺銆傝憲浣滄湁銆婃墜宸ユ墦閫犲井鍨媁in32鍙墽琛屾枃浠躲嬨婃孩鍑哄埄鐢ㄧ▼搴忓拰緙栫▼璇█澶ф潅鐑┿嬨奟SA綆楁硶鍩虹->瀹炶返銆?/p>

zwell email:suei8423@163.com http://blog.donews.com/zwell NB鑱旂洘鏍稿績鎴愬憳銆傜簿閫歸indows鎿嶄綔緋葷粺錛岃憲浣滄湁銆婂畨鍏ㄧǔ瀹氱殑瀹炵幇榪涚嚎紼嬬洃鎺с嬨婁竴縐嶆柊鐨勭┛閫忛槻鐏鐨勬暟鎹紶杈撴妧鏈?/p>

zzzevazzz QQ:49322630 http://zzzevazzz.bokee.com/index.html 騫誨獎鏃呭洟鏍稿績鎴愬憳銆傚師鐏拌壊杞ㄨ抗鐨勪漢銆傜簿閫歸indows鎿嶄綔緋葷粺鍐呮牳銆傝憲浣滄湁銆奃o All in Cmd Shell銆嬨婃棤椹卞姩鎵цring0浠g爜銆嬬瓑絳夈?/p>

灝忔 http://www.netxeyes.org 嫻佸厜錛屼貢鍒錛屾漢闆強鍛戒護琛孲QL娉ㄥ叆宸ュ叿鐨勪綔鑰呫備腑鍥界浜屼唬榛戝銆?/p>

lion QQ:21509 email:lion@cnhonker.com http://www.cnhonker.com 鍘熶腑鍥界孩瀹㈣仈鐩熺珯闀匡紝瀵圭紦鍐插尯婧㈠嚭寰堟湁鐮旂┒銆傜簿閫歭inux.windows.

isno QQ:1070681 email:isno@xfocus.org 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛岀簿閫氱紦鍐插尯婧㈠嚭婕忔礊銆倃ebdav婧㈠嚭紼嬪簭鐨勪綔鑰呫傚啓榪嘔DQ錛孖DA婕忔礊婧㈠嚭鐨勫垎鏋愮瓑絳夈?/p>

sinister QQ:3350124 email:sinister@whitecell.org 鐧界粏鑳炴垚鍛樸傜簿閫歸indows鍐呮牳錛孉IX銆傝憲浣滄湁銆奛T 鍐呮牳鐨勮繘紼嬭皟搴﹀垎鏋愮瑪璁般嬨奛T 涓嬪姩鎬佸垏鎹㈣繘紼嬪垎鏋愮瑪璁般嬨夾IX 鍐呮牳鐨勮櫄鎷熸枃浠剁郴緇熸鏋躲嬨夾IX 鍐呮牳鐨勬枃浠舵搷浣滄祦紼嬨?/p>

琚佸摜 email:yuange@nsfocus.com 鐜板氨鑱屼簬涓仈緇跨洘鍏徃銆傜簿閫歸indows鎿嶄綔緋葷粺鍐呮牳浠ュ強婕忔礊鍒╃敤銆?/p>

warning3 email:warning3@nsfocus.com msn:warning3@hotmail.com 綺鵑歭inux unix鍐呮牳鍙婃紡媧炪傜幇灝辮亴浜庝腑鑱旂豢鐩熷叕鍙搞傝憲浣滄湁銆奌eap/BSS 婧㈠嚭鏈虹悊鍒嗘瀽銆?/p>

SoBeIt QQ:27324838 email:kinvis@hotmail.com 綺鵑歸indows緙栫▼浠ュ強緋葷粺鍐呮牳榪樻湁婧㈠嚭銆傝憲浣滄湁銆奧indows鍐呮牳璋冭瘯鍣ㄥ師鐞嗘祬鏋愩嬶紝銆婃寕閽¦indows API銆嬬瓑絳夌炕璇戣繃銆婂湪NT緋誨垪鎿嶄綔緋葷粺閲岃鑷繁“娑堝け”銆?/p>

xhacker QQ:66680800 綺鵑氭笚閫忓叆渚典互鍙婅剼鏈叆渚點傝憲浣滄湁銆婅榪拌櫄鎷熺綉绔欑殑鏉冮檺紿佺牬鍙婇槻鑼冦嬶紝銆婂浣曞埄鐢ㄩ粦瀹㈡妧鏈窡韙茍鍒嗘瀽涓鍚嶇洰鏍囦漢鐗┿?/p>

eyas QQ:320236 email:eyas@xfocus.org 瀹夊叏鐒︾偣鏍稿績鎴愬憳錛岀啛鎮墂indows鎿嶄綔緋葷粺錛寃indows緙栫▼銆傝憲浣滄湁銆奛T騫沖彴鎷ㄥ彿榪炴帴瀵嗙爜鎭㈠鍘熺悊銆嬶紝銆奧S_FTP FTPD STAT鍛戒護榪滅▼婧㈠嚭鍒嗘瀽銆?/p>

瀛ょ嫭鍓戝 QQ:5385757 email:Janker@Hackbase.Com Http://Www.Janker.Org 綺鵑氱紪紼嬨備互鍙婂叆渚墊妧鏈倃inshell鐨勪綔鑰呫備腑鍥界浜屼唬榛戝銆?/p>

sunx QQ:239670 http://www.sunx.org 瀵規孩鍑烘湁鐮旂┒錛屽啓榪嘔DA婕忔礊鍜宲rinter婕忔礊鐨勬孩鍑虹▼搴忋傜簿閫氭眹緙栥傝憲浣滃緢澶氥?/p>

analysist QQ:20116789 綺鵑氭暟鎹簱涓庤剼鏈叆渚點傛棭騫村璺ㄧ珯鑴氭湰浠ュ強寰堝鑴氭湰婕忔礊寰堟湁鐮旂┒銆傝憲浣滄湁銆婅法绔欒剼鏈墽琛屾紡媧炶瑙c嬶紝銆夿BS2000鍜孊BS3000鎵瀛樺湪鐨勫畨鍏ㄩ殣鎮c?/p>

Frankie http://cnns.net 綺鵑歸indows鎿嶄綔緋葷粺錛屼笌linux銆備腑鍥界涓浠i粦瀹€?/p>

rootshell(fzk) QQ:1734398 http://www.ns-one.com 綺鵑歸indows鎿嶄綔緋葷粺錛岀啛鎮夌紦鍐插尯婧㈠嚭婕忔礊銆傝佷竴浠g殑榛戝銆傝憲浣滄湁銆婃渶榪戝彂鐜扮殑涓涓狣istributed File System鏈嶅姟榪滅▼婧㈠嚭闂銆嬨?/p>

PP QQ:82928 綺鵑歸indows鎿嶄綔緋葷粺銆傚悕璦錛?font style="BACKGROUND-COLOR: #ffff00">濡傛灉鎯抽寰楅珮錛屽氨璇ユ妸鍦板鉤綰垮繕鎺?/font>銆?/p>

tianxing OICQ:911189 緗戠珯:http://www.tianxing.org/ 綺鵑歸indows鎿嶄綔緋葷粺涓庢紡媧炲埄鐢ㄣ俁PC婕忔礊鍒╃敤紼嬪簭浠ュ強緗戠粶鍒哄,緗戠粶鍗叺鐨勪綔鑰呫?/p>

grip2 QQ:1007270 綺鵑歭inux鎿嶄綔緋葷粺銆傝憲浣滄湁銆婁竴涓狶inux鐥呮瘨鍘熷瀷鍒嗘瀽銆?/p>

san QQ:56941 綺鵑歸indows鎿嶄綔緋葷粺浠ュ強linux銆傝屼笖瀵箇indows CE寰堟湁鐮旂┒銆俻hrack鏈鍚庝竴鏈熺殑鏉傚織涓紝鍒婄櫥榪囦粬鐨勬枃绔犮?/p>

hume QQ:8709369 綺鵑氭眹緙栦互鍙妛indows鎿嶄綔緋葷粺銆傝憲浣滄湁銆奡EH in ASM 鐨勭爺絀躲?/p>

backend email:backend@antionline.org 綺鵑歭inux鎿嶄綔緋葷粺銆傜炕璇戣繃寰堝鏂囩珷錛屾槸緇跨洘鐨勯珮鎵嬨備笉榪囧凡緇忓嚑騫存病瑙佸湪緗戠粶涓婃父璧頒簡銆傚埌鏄幇瀹炰腑鍋跺皵鐪嬪埌浠栥?/p>

Adam QQ:15898 email:adam@nsfocus.com 緇跨洘鐨勯珮鎵嬶紝windows瀹夊叏鐗堢増涓匯傜簿閫歸indows鎿嶄綔緋葷粺銆?/p>

ipxodi QQ:16175535 email:ipxodi@nsfocus.com 寰堥暱鏃墮棿娌$湅瑙佷粬浜嗐傜簿閫歸indows鎿嶄綔緋葷粺浠ュ強緙撳啿鍖烘孩鍑恒傝憲浣滄湁銆妛indow緋葷粺涓嬬殑鍫嗘爤婧㈠嚭銆嬨奧indows 2000緙撳啿鍖烘孩鍑哄叆闂ㄣ嬨傝繖浜涙枃绔犻兘鏄犵浜嗗緢澶氬悗杈堢殑銆?/p>

zer9 QQ:573369 email:zer9@21cn.com 涔熸槸寰堥暱鏃墮棿娌¤鍒頒簡銆傛棭鏈熷啓榪囦笉灝戞枃绔犲拰宸ュ叿銆備篃鏄佷竴杈堢殑闈╁懡瀹躲?/p>

whg QQ:312016 email:whg0001@163.com http://WWW.CNASM.COM 涓嶇煡閬撶畻涓嶇畻鐧界粏鑳炵殑鎴愬憳錛屽懙鍛點傜梾姣掗珮鎵嬨傜簿閫氭眹緙栥傚啓榪囦笉灝戣蔣浠訛紝渚嬪lan涓媠niff QQ鐨勫伐鍏蜂互鍙妔niff宸ュ叿絳夌瓑錛屽彲浠ュ埌浠栫殑涓婚〉涓婂幓鐪嬨?/p>

lg_wu email:lgwu2000@sina.com 鍦ㄧ豢鐩熻鍧涘拰瀹夊叏鐒︾偣閮借榪囷紝瀵筶inux綺鵑氱殑寰堛傛妧鏈笉涓鑸殑璇淬?/p>

wowocock QQ:37803144 綺鵑歸indows鎿嶄綔緋葷粺鍐呮牳錛屾眹緙栥傚湪椹卞姩寮鍙戠綉浠ュ強cvc銆杞繪弿娣″啓瑙佽繃錛屾妧鏈笉涓鑸傝憲浣滃緢澶氾紝浣嗘槸瑙佸埌鐨勫緢灝戙備笉鐭ラ亾涓轟粈涔堣繖涔堝ソ鐨勬枃绔犳病浜鴻漿錛?/p>

baiyuanfan QQ:51449276 榪欏皬瀛愬湪宄頒細涓婄粰鎴戠殑鍗拌薄寰堟繁銆傚湪鎶鏈笂寰堜笅宸ュか銆傚windows涔熺畻鏈夌爺絀朵簡銆傝憲浣滃綋鐒舵槸byshell浜嗐?/p>

vxk QQ:355852911 姹囩紪鎶鏈緢紜紝綺鵑歸indows鍐呮牳銆傜粡甯稿湪cvc璁哄潧鐪嬪埌浠栥?/p>

鍐拌灝佹儏 QQ:124839278 閭伓鍏繘鍒剁殑鍒涘浜恒備腑鍥界鍥涗唬榛戝銆傛劅瑙夎繖涓漢寰堜笉閿欍傚浠栫殑緇勭粐姣旇緝璁ゅ彲銆傛妧鏈笂闈㈣繕鍙互銆?/p>

Polymorphours(shadow3) QQ:120974745鐧界粏鑳炴垚鍛樸備互鍓嶅彨shadow3.濂借薄鎹㈠悕瀛椾簡銆傜啛鎮墂indows鎿嶄綔緋葷粺錛屼互鍙婄紦鍐插尯婧㈠嚭銆傝憲浣滄湁銆奙S05-010璁稿彲璇佽褰曟湇鍔℃紡媧炲厑璁告墽琛屼唬鐮佺殑鍒嗘瀽銆嬨奙edia Player 8.0 vulnerability銆嬬瓑絳夈?/p>

e4gle QQ:1949479鐧界粏鑳炴垚鍛樸傝佷竴浠g殑榛戝銆傜簿閫歭inux緋葷粺鍐呮牳浠ュ強鐥呮瘨鎶鏈紝緙撳啿鍖烘孩鍑恒傝憲浣滄湁銆婄▼搴忔敾鍑誨師鐞嗐嬨奤nix緋葷粺鐥呮瘨姒傝堪銆嬨婇珮綰х紦鍐叉孩鍑虹殑浣跨敤銆?/p>

bingle QQ:45671342寰堟棭灝辮璇嗙殑涓涓厔寮熶簡銆傝憲浣滀笉灝戯紝寰堝閮藉緢瀹炵敤銆?/p>

wollf QQ:228095 glacier鐨勮佸﹩銆備竴瀹氫笉鑳借浠栫煡閬撴垜鏄皝錛岃涓嶆垜灝辨瀹氫簡銆傚ス鏄粦瀹紱錛夌編濂抽粦瀹紒

goodwell錛氫腑鍥芥棭鏈熻憲鍚嶉粦瀹㈢粍緇囷紞緇胯壊鍏靛洟銆鍒涘浜轟箣涓銆?/p>

yellow QQ:12398890錛氫腑鍗庡畨鍏ㄧ綉鏍稿績鎴愬憳銆傜啛鎮夌紦鍐插尯婧㈠嚭涓巜indows緙栫▼銆?/p>

姹熸搗瀹?QQ:741534錛氭浘緇忓弬鍔犳煇涓細璁殑鏃跺欒榪囦粬錛岃亰鐨勮繕鍙互錛屽悗鏉ュ湪鐒︾偣宄頒細鏃跺張紕頒簡闈€傛浜烘槸鍙嶇梾姣掓柟闈㈢殑楂樻墜銆?/p>

icmb錛氬惎鏄庢槦杈發inux鏂歸潰鐨勯珮鎵嬨傚浜庢紡媧炴柟闈㈠緢鏈夌爺絀躲備笉甯︾溂鐫涙洿婕備寒…… 



]]>
VC6.0緙栬瘧鍣ㄥ弬鏁拌緗?http://www.shnenglu.com/xpzhou/archive/2007/04/23/22672.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Mon, 23 Apr 2007 11:51:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/04/23/22672.htmlhttp://www.shnenglu.com/xpzhou/comments/22672.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/04/23/22672.html#Feedback0http://www.shnenglu.com/xpzhou/comments/commentRss/22672.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/22672.htmlVC6.0緙栬瘧鍣ㄥ弬鏁扮殑璁劇疆涓昏閫氳繃VC鐨勮彍鍗曢」Project->Settings->C/C++欏墊潵瀹屾垚銆傛垜浠彲浠ョ湅鍒拌繖涓欏電殑鏈涓嬮潰Project Options涓殑鍐呭錛屼竴鑸涓嬶細

/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c

鍚勪釜鍙傛暟浠h〃鐨勬剰涔夛紝鍙互鍙傝僊sdn銆傛瘮濡?nologo琛ㄧず緙栬瘧鏃朵笉鍦ㄨ緭鍑虹獥鍙f樉紺鴻繖浜涜緗紙鎴戜滑鍙互鎶婅繖涓弬鏁板幓鎺夋潵鐪嬬湅鏁堟灉錛夌瓑絳夈備竴鑸垜浠笉浼氱洿鎺ヤ慨鏀硅繖浜涜緗紝鑰屾槸閫氳繃榪欎竴欏墊渶涓婇潰鐨凜ategory涓殑鍚勯」鏉ュ畬鎴?.....
錛嶈漿杞斤紞


涓昏閫氳繃VC鐨勮彍鍗曢」Project->Settings->C/C++欏墊潵瀹屾垚銆傛垜浠彲浠ョ湅鍒拌繖涓欏電殑鏈涓嬮潰Project Options涓殑鍐呭錛屼竴鑸涓嬶細

/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c

鍚勪釜鍙傛暟浠h〃鐨勬剰涔夛紝鍙互鍙傝僊sdn銆傛瘮濡?nologo琛ㄧず緙栬瘧鏃朵笉鍦ㄨ緭鍑虹獥鍙f樉紺鴻繖浜涜緗紙鎴戜滑鍙互鎶婅繖涓弬鏁板幓鎺夋潵鐪嬬湅鏁堟灉錛夌瓑絳夈備竴鑸垜浠笉浼氱洿鎺ヤ慨鏀硅繖浜涜緗紝鑰屾槸閫氳繃榪欎竴欏墊渶涓婇潰鐨凜ategory涓殑鍚勯」鏉ュ畬鎴愩?/font>

1) General錛氫竴浜涙諱綋璁劇疆銆?/font>

Warning level銆鐢ㄦ潵鎺у埗璀﹀憡淇℃伅錛屽叾涓璍evel 1鏄渶涓ラ噸鐨勭駭鍒紱
Warnings as errors銆灝嗚鍛婁俊鎭綋浣滈敊璇鐞嗭紱
Optimizations銆浠g爜浼樺寲錛屽彲浠ュ湪Category鐨凮ptimizations欏逛腑榪涜鏇寸粏鐨勮緗紱
Generate browse info銆鐢ㄤ互鐢熸垚.sbr鏂囦歡錛岃褰曠被銆佸彉閲忕瓑絎﹀彿淇℃伅錛屽彲浠ュ湪Category鐨凩isting Files欏逛腑榪涜鏇村鐨勮緗?
Debug info銆鐢熸垚璋冭瘯淇℃伅錛?
None錛屼笉浜х敓浠諱綍璋冭瘯淇℃伅錛堢紪璇戞瘮杈冨揩錛夛紱
Line Numbers Only錛屼粎鐢熸垚鍏ㄥ眬鐨勫拰澶栭儴絎﹀彿鐨勮皟璇曚俊鎭埌.OBJ鏂囦歡鎴?EXE鏂囦歡錛屽噺灝忕洰鏍囨枃浠剁殑灝哄錛?
C 7.0- Compatible錛岃褰曡皟璇曞櫒鐢ㄥ埌鐨勬墍鏈夌鍙蜂俊鎭埌.OBJ鏂囦歡鍜?EXE鏂囦歡錛?
Program Database錛屽垱寤?PDB鏂囦歡璁板綍鎵鏈夎皟璇曚俊鎭紱
Program Database for "Edit & Continue"錛屽垱寤?PDB鏂囦歡璁板綍鎵鏈夎皟璇曚俊鎭紝騫朵笖鏀寔璋冭瘯鏃剁紪杈戙?

2) C++ Language

Pointer-to-member representation銆鐢ㄦ潵璁劇疆綾誨畾涔?寮曠敤鐨勫厛鍚庡叧緋伙細
Best-Case Always錛岃〃紺哄湪寮曠敤綾諱箣鍓嶈綾昏偗瀹氬凡緇忓畾涔夛紱
General-Purpose Always錛岋紵
Point to Any Class
Point to Single- and Multiple-Inheritance Classes
Point to Single-Inheritance Classes
Enable Exception Handling錛岃繘琛屽悓姝ョ殑寮傚父澶勭悊錛?
Enable Run-Time Type Information銆榪嬌緙栬瘧鍣ㄥ鍔犱唬鐮佸湪榪愯鏃惰繘琛屽璞$被鍨嬫鏌ワ紱
Disable Construction Displacements銆璁劇疆綾繪瀯閫?鏋愭瀯鍑芥暟璋冪敤铏氬嚱鏁伴棶棰樸?

3) Code Generation

Processor銆琛ㄧず浠g爜鎸囦護浼樺寲錛屽彲浠ヤ負80386銆?0486銆丳entium銆丳entium Pro錛屾垨鑰匓lend琛ㄧず娣峰悎浠ヤ笂鍚勭浼樺寲銆?
Use run-time library銆鐢ㄤ互鎸囧畾紼嬪簭榪愯鏃朵嬌鐢ㄧ殑榪愯鏃跺簱錛屾湁涓涓師鍒欏氨鏄紝涓涓繘紼嬩笉瑕佸悓鏃朵嬌鐢ㄥ嚑涓増鏈殑榪愯鏃跺簱銆傝繛鎺ヤ簡鍗曠嚎紼嬪簱灝變笉鏀寔澶氱嚎紼嬭皟鐢紝榪炴帴浜嗗綰跨▼搴撳氨瑕佹眰鍒涘緩澶氱嚎紼嬬殑搴旂敤紼嬪簭銆?
Single-Threaded錛屽崟綰跨▼Release鐗堟湰錛岄潤鎬佽繛鎺IBC.LIB搴擄紱
Debug Single-Threaded錛屽崟綰跨▼Debug鐗堟湰錛岄潤鎬佽繛鎺IBCD.LIB搴擄紱
Multithreaded錛屽綰跨▼Release鐗堟湰錛岄潤鎬佽繛鎺IBCMT.LIB搴擄紱
Debug Multithreaded錛屽綰跨▼Debug鐗堟湰錛岄潤鎬佽繛鎺IBCMTD.LIB搴擄紱
Multithreaded DLL錛屽姩鎬佽繛鎺SVCRT.DLL搴擄紱
Debug Multithreaded DLL錛屽姩鎬佽繛鎺SVCRTD.DLL搴撱?
Calling convention銆鍙互鐢ㄦ潵璁懼畾璋冪敤綰﹀畾錛屾湁涓夌錛歘_cdecl銆乢_fastcall鍜宊_stdcall銆?br>銆銆鍚勭璋冪敤綰﹀畾鐨勪富瑕佸尯鍒湪浜庯細1. 鍑芥暟璋冪敤鏃訛紝鍑芥暟鐨勫弬鏁版槸浠庡乏鍒板彸鍘嬪叆鍫嗘爤榪樻槸浠庡彸鍒板乏鍘嬪叆鍫嗘爤錛?. 鍦ㄥ嚱鏁拌繑鍥炴椂錛岀敱鍑芥暟鐨勮皟鐢ㄨ呮潵娓呯悊鍘嬪叆鍫嗘爤鐨勫弬鏁拌繕鏄敱鍑芥暟鏈韓鏉ユ竻鐞嗭紱3. 浠ュ強鍦ㄧ紪璇戞椂瀵瑰嚱鏁板悕榪涜鐨勫懡鍚嶄慨楗幫紙鍙互閫氳繃Listing Files鐪嬪埌鍚勭鍛藉悕淇グ鏂瑰紡錛夈?
Struct member alignment銆鐢ㄤ互鎸囧畾鏁版嵁緇撴瀯涓殑鎴愬憳鍙橀噺鍦ㄥ唴瀛樹腑鏄寜鍑犲瓧鑺傚榻愮殑錛屾牴鎹綆楁満鏁版嵁鎬葷嚎鐨勪綅鏁幫紝涓嶅悓鐨勫榻愭柟寮忓瓨鍙栨暟鎹殑閫熷害涓嶄竴鏍楓傝繖涓弬鏁板鏁版嵁鍖呯綉緇滀紶杈撶瓑搴旂敤灝や負閲嶈錛屼笉鏄瓨鍙栭熷害闂錛岃屾槸鏁版嵁浣嶇殑綺劇‘瀹氫箟闂錛屼竴鑸湪紼嬪簭涓嬌鐢?pragma pack鏉ユ寚瀹氥?

4) Customize

Disable Language Extensions錛岃〃紺轟笉浣跨敤寰蔣涓烘爣鍑咰鍋氱殑璇█鎵╁睍錛?
Eliminate Duplicate Strings錛屼富瑕佺敤浜庡瓧絎︿覆浼樺寲錛堝皢瀛楃涓叉斁鍒扮紦鍏呮睜閲屼互鑺傜渷絀洪棿錛夛紝浣跨敤榪欎釜鍙傛暟錛屼嬌寰?br>            char *sBuffer = "This is a character buffer";
            char *tBuffer = "This is a character buffer";
            sBuffer 鍜宼Buffer鎸囧悜鐨勬槸鍚屼竴鍧楀唴瀛樼┖闂達紱
Enable Function-Level Linking 錛屽憡璇夌紪璇戝櫒灝嗗悇涓嚱鏁版寜鎵撳寘鏍煎紡緙栬瘧錛?
Enables minimal rebuild錛岄氳繃淇濆瓨鍏寵仈淇℃伅鍒?IDB鏂囦歡錛屼嬌緙栬瘧鍣ㄥ彧瀵規渶鏂扮被瀹氫箟鏀瑰姩榪囩殑婧愭枃浠惰繘琛岄噸緙栬瘧錛屾彁楂樼紪璇戦熷害錛?
Enable Incremental Compilation錛屽悓鏍烽氳繃.IDB鏂囦歡淇濆瓨鐨勪俊鎭紝鍙噸緙栬瘧鏈鏂版敼鍔ㄨ繃鐨勫嚱鏁幫紱
Suppress Startup Banner and Information Messages錛岀敤浠ユ帶鍒跺弬鏁版槸鍚﹀湪output紿楀彛杈撳嚭銆?/font>


5) Listing Files

Generate browse info 涓婇潰宸茬粡鎻愬埌榪囥傝繖閲屽彲浠ヨ繘琛屾洿澶氱殑璁劇疆銆?
Exclude Local Variables from Browse Info銆琛ㄧず鏄惁灝嗗眬閮ㄥ彉閲忕殑淇℃伅鏀懼埌.SBR鏂囦歡涓?
Listing file type銆鍙互璁劇疆鐢熸垚鐨勫垪琛ㄤ俊鎭枃浠剁殑鍐呭錛?
Assembly-Only Listing銆浠呯敓鎴愭眹緙栦唬鐮佹枃浠訛紙.ASM鎵╁睍鍚嶏級錛?
Assembly With Machine Code銆鐢熸垚鏈哄櫒浠g爜鍜屾眹緙栦唬鐮佹枃浠訛紙.COD鎵╁睍鍚嶏級錛?
Assembly With Source Code銆鐢熸垚婧愪唬鐮佸拰姹囩紪浠g爜鏂囦歡錛?ASM鎵╁睍鍚嶏級錛?
Assembly, Machine Code, and Source銆鐢熸垚鏈哄櫒鐮併佹簮浠g爜鍜屾眹緙栦唬鐮佹枃浠訛紙.COD鎵╁睍鍚嶏級銆?
Listing file name銆鐢熸垚鐨勪俊鎭枃浠剁殑璺緞錛屼竴鑸負Debug鎴朢elease鐩綍涓嬶紝鐢熸垚鐨勬枃浠跺悕鑷姩鍙栨簮鏂囦歡鐨勬枃浠跺悕銆?

6) Optimizations銆浠g爜浼樺寲璁劇疆銆?/font>

Maximize Speed銆鐢熸垚鏈蹇熺殑浠g爜錛?
Minimize Size銆鐢熸垚鏈灝忓昂瀵哥殑紼嬪簭錛?
Customize銆瀹氬埗浼樺寲銆傚畾鍒剁殑鍐呭鍖呮嫭錛?
Assume No Aliasing錛屼笉浣跨敤鍒悕錛堟彁楂橀熷害錛夛紱
Assume Aliasing Across Function Calls錛屼粎鍑芥暟鍐呴儴涓嶄嬌鐢ㄥ埆鍚嶏紱
Global Optimizations錛屽叏灞浼樺寲錛屾瘮濡傜粡甯哥敤鍒扮殑鍙橀噺浣跨敤瀵勫瓨鍣ㄤ繚瀛橈紝鎴栬呭驚鐜唴鐨勮綆椾紭鍖栵紝濡俰 = -100;while( i < 0 ){顐緄 += x + y;}浼氳浼樺寲涓篿 = -100;t = x + y;while( i < 0 ){i += t;}錛?
Generate Intrinsic Functions錛屼嬌鐢ㄥ唴閮ㄥ嚱鏁版浛鎹竴浜涘嚱鏁拌皟鐢紙鎻愰珮閫熷害錛夛紱
Improve Float Consistency錛屾誕鐐硅繍綆楁柟闈㈢殑浼樺寲錛?
Favor Small Code錛岀▼搴忥紙exe鎴杁ll錛夊昂瀵鎬紭鍖栦紭鍏堜簬浠g爜閫熷害浼樺寲錛?
Favor Fast Code錛岀▼搴忥紙exe鎴杁ll錛変唬鐮侀熷害浼樺寲浼樺厛浜庡昂瀵鎬紭鍖栵紱
Frame-Pointer Omission錛屼笉浣跨敤甯ф寚閽堬紝浠ユ彁楂樺嚱鏁拌皟鐢ㄩ熷害錛?
Full Optimization錛岀粍鍚堜簡鍑犵鍙傛暟錛屼互鐢熸垚鏈蹇殑紼嬪簭浠g爜銆?
Inline function expansion錛屽唴鑱斿嚱鏁版墿灞曠殑涓夌浼樺寲錛堜嬌鐢ㄥ唴鑱斿彲浠ヨ妭鐪佸嚱鏁拌皟鐢ㄧ殑寮閿錛屽姞蹇▼搴忛熷害錛夛細
Disable錛屼笉浣跨敤鍐呰仈錛?
Only __inline錛屼粎鍑芥暟瀹氫箟鍓嶆湁inline鎴朹_inline鏍囪浣跨敤鍐呰仈錛?
Any Suitable錛岄櫎浜唅nline鎴朹_inline鏍囪鐨勫嚱鏁板錛岀紪璇戝櫒"瑙夊緱"搴旇浣跨敤鍐呰仈鐨勫嚱鏁幫紝閮戒嬌鐢ㄥ唴鑱斻?

7) Precompiled Headers銆棰勭紪璇戝ご鏂囦歡鐨勮緗備嬌鐢ㄩ緙栬瘧鍙互鎻愰珮閲嶅緙栬瘧鐨勯熷害銆俈C涓鑸皢涓浜涘叕鍏辯殑銆佷笉澶у彉鍔ㄧ殑澶存枃浠訛紙姣斿afxwin.h絳夛級闆嗕腑鏀懼埌stdafx.h涓紝榪欎竴閮ㄥ垎浠g爜灝變笉蹇呮瘡嬈¢兘閲嶆柊緙栬瘧錛堥櫎闈炴槸Rebuild All錛夈?/font>


8) Preprocessor銆棰勭紪璇戝鐞嗐傚彲浠ュ畾涔?瑙i櫎瀹氫箟涓浜涘父閲忋?/font>

Additional include directories錛屽彲浠ユ寚瀹氶澶栫殑鍖呭惈鐩綍錛屼竴鑸槸鐩稿浜庢湰欏圭洰鐨勭洰褰曪紝濡?.\Include銆?/font>


--------------------------------------------------------------------------------
榪炴帴鍙傛暟鐨勮緗?br>涓昏閫氳繃VC鐨勮彍鍗曢」Project->Settings->Link欏墊潵瀹屾垚銆傛垜浠彲浠ョ湅鍒拌繖涓欏電殑鏈涓嬮潰Project Options涓殑鍐呭錛屼竴鑸涓嬶細

/nologo /subsystem:windows /incremental:yes /pdb:"Debug/WritingDlgTest.pdb" /debug /machine:I386 /out:"Debug/WritingDlgTest.exe" /pdbtype:sept

涓嬮潰鎴戜滑鍒嗗埆鏉ョ湅涓涓婥ategory涓殑鍚勯」璁劇疆銆?/font>

1) General銆涓浜涙諱綋璁劇疆銆傚彲浠ヨ緗敓鎴愮殑鏂囦歡璺緞銆佹枃浠跺悕錛涜繛鎺ョ殑搴撴枃浠訛紱

Generate debug info錛岀敓鎴怐ebug淇℃伅鍒?PDB鏂囦歡錛堝叿浣撴牸寮忓彲浠ュ湪Category->Debug涓緗級錛?
Ignore All Default Libraries錛屾斁寮冩墍鏈夐粯璁ょ殑搴撹繛鎺ワ紱
Link Incrementally錛岄氳繃鐢熸垚. ILK鏂囦歡瀹炵幇閫掑寮忚繛鎺ヤ互鎻愰珮鍚庣畫榪炴帴閫熷害錛屼絾涓鑸繖縐嶆柟寮忎笅鐢熸垚鐨勬枃浠訛紙EXE鎴朌LL錛夎緝澶э紱
Generate Mapfile錛岀敓鎴?MAP鏂囦歡璁板綍妯″潡鐩稿叧淇℃伅錛?
Enable Profiling錛岃繖涓弬鏁伴氬父涓嶨enerate Mapfile鍙傛暟鍚屾椂浣跨敤錛岃屼笖濡傛灉浜х敓Debug淇℃伅鐨勮瘽錛屼笉鑳界敤.PDB鏂囦歡錛岃屼笖蹇呴』鐢∕icrosoft Format銆?

2) Customize銆榪欓噷鍙互榪涜浣跨敤紼嬪簭鏁版嵁搴撴枃浠剁殑璁劇疆銆?/font>

Force File Output錛屽己鍒朵駭鐢熻緭鍑烘枃浠訛紙EXE鎴朌LL錛夛紱
Print Progress Messages錛屽彲浠ュ皢榪炴帴榪囩▼涓殑榪涘害淇℃伅杈撳嚭鍒癘utput紿楀彛銆?

3) Debug銆璁劇疆鏄惁鐢熸垚璋冭瘯淇℃伅錛屼互鍙婅皟璇曚俊鎭殑鏍煎紡銆?/font>

Dubug info錛屾牸寮忓彲浠ユ湁Microsoft Format銆丆OFF Format錛圕ommon Object File Format錛夊拰Both Formats涓夌閫夋嫨錛?
Separate Types錛岃〃紺哄皢Debug鏍煎紡淇℃伅浠ョ嫭绔嬬殑.PDB鏂囦歡瀛樻斁錛岃繕鏄洿鎺ユ斁鍦ㄥ悇涓簮鏂囦歡鐨?PDB鏂囦歡涓傞変腑鐨勮瘽錛岃〃紺洪噰鐢ㄥ悗鑰呯殑鏂瑰紡錛岃繖縐嶆柟寮忚皟璇曞惎鍔ㄦ瘮杈冨揩銆?/font>


4) Input銆榪欓噷鍙互鎸囧畾瑕佽繛鎺ョ殑搴撴枃浠訛紝鏀懼純榪炴帴鐨勫簱鏂囦歡銆傝繕鍙互澧炲姞棰濆鐨勫簱鏂囦歡鐩綍錛屼竴鑸槸鐩稿浜庢湰欏圭洰鐨勭洰褰曪紝濡?.\Lib銆?/font>

Force Symbol References錛屽彲浠ユ寚瀹氳繛鎺ョ壒瀹氱鍙峰畾涔夌殑搴撱?

5) Output銆

Base Address銆鍙互鏀瑰彉紼嬪簭榛樿鐨勫熀鍦板潃錛圗XE鏂囦歡榛樿涓?x400000錛孌LL榛樿涓?x10000000錛夛紝鎿嶄綔緋葷粺瑁呰澆涓涓▼搴忔椂鎬繪槸璇曠潃鍏堜粠榪欎釜鍩哄湴鍧寮濮嬨?
Entry-Point Symbol銆鍙互鎸囧畾紼嬪簭鐨勫叆鍙e湴鍧錛屼竴鑸負涓涓嚱鏁板悕錛堜笖蹇呴』閲囩敤__stdcall璋冪敤綰﹀畾錛夈備竴鑸琖in32鐨勭▼搴忥紝EXE鐨勫叆鍙d負 WinMain錛孌LL鐨勫叆鍙d負DllEntryPoint錛涙渶濂借榪炴帴鍣ㄨ嚜鍔ㄨ緗▼搴忕殑鍏ュ彛鐐廣傞粯璁ゆ儏鍐典笅錛岄氳繃涓涓狢鐨勮繍琛屾椂搴撳嚱鏁版潵瀹炵幇錛氭帶鍒跺彴紼嬪簭閲囩敤mainCRTStartup (鎴杦mainCRTStartup)鍘昏皟鐢ㄧ▼搴忕殑main (鎴杦main)鍑芥暟錛沇indows紼嬪簭閲囩敤WinMainCRTStartup (鎴?wWinMainCRTStartup)璋冪敤紼嬪簭鐨刉inMain (鎴?wWinMain錛屽繀欏婚噰鐢╛_stdcall璋冪敤綰﹀畾)錛汥LL閲囩敤_DllMainCRTStartup璋冪敤DllMain鍑芥暟錛堝繀欏婚噰鐢?__stdcall璋冪敤綰﹀畾錛夈?
Stack allocations銆鐢ㄤ互璁劇疆紼嬪簭浣跨敤鐨勫爢鏍堝ぇ灝忥紙璇蜂嬌鐢ㄥ崄榪涘埗錛夛紝榛樿涓?鍏嗗瓧鑺傘?
Version Information銆鍛婅瘔榪炴帴鍣ㄥ湪EXE鎴朌LL鏂囦歡鐨勫紑濮嬮儴鍒嗘斁涓婄増鏈彿銆?

鍊煎緱娉ㄦ剰鐨勬槸錛?/font>

涓婇潰鍚勪釜鍙傛暟鏄ぇ灝忓啓鏁忔劅鐨勶紱
鍦ㄥ弬鏁板悗鍔犱笂"-"琛ㄧず璇ュ弬鏁版棤鏁堬紱
鍚勪釜鍙傛暟鍊奸夐」鏈?*"鐨勮〃紺轟負璇ュ弬鏁扮殑榛樿鍊鹼紱
鍙互浣跨敤欏靛彸涓婅鐨?Reset"鎸夐挳鏉ユ仮澶嶈欏電殑鎵鏈夐粯璁よ緗?

--------------------------------------------------------------------------------
鍏跺畠涓浜涘弬鏁拌緗?/font>

1) Project->Settings->General錛屽彲浠ヨ緗繛鎺FC搴撶殑鏂瑰紡錛堥潤鎬佹垨鍔ㄦ侊級銆傚鏋滄槸鍔ㄦ佽繛鎺ワ紝鍦∕FC杞歡鍙戝竷鏃朵笉瑕佸繕浜嗗甫涓奙FC鐨凞LL銆?/font>

2) Project->Settings->Debug錛屽彲浠ヨ緗皟璇曟椂榪愯鐨勫彲鎵ц鏂囦歡錛屼互鍙婂懡浠よ鍙傛暟絳夈?/font>

3) Project->Settings->Custom Build錛屽彲浠ヨ緗紪璇?榪炴帴鎴愬姛鍚庤嚜鍔ㄦ墽琛屼竴浜涙搷浣溿傛瘮杈冩湁鐢ㄧ殑鏄紝鍐機OM鏃跺笇鏈沄C瀵圭紪璇戦氳繃鐨凜OM鏂囦歡鑷姩娉ㄥ唽錛屽彲浠ュ涓嬭緗細

Description: Register COM

Commands: regsvr32 /s /c $(TargetPath)

echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg

Outputs: $(TargetDir)\$(TargetName).trg


4) Tools->Options->Directories錛岃緗郴緇熺殑Include銆丩ibrary璺緞銆?/font>

--------------------------------------------------------------------------------
灝忕獚闂? 欏圭洰涓殑.ncb銆?opt銆?aps銆?clw鏂囦歡浠ュ強Debug銆丷elease鐩綍涓嬬殑鎵鏈夋枃浠墮兘鍙互鍒犳帀鐨勩?/font>



]]>
VC涓熀浜?Windows 鐨勭簿紜畾鏃?/title><link>http://www.shnenglu.com/xpzhou/archive/2007/04/20/22426.html</link><dc:creator>姒曟爲钘?/dc:creator><author>姒曟爲钘?/author><pubDate>Fri, 20 Apr 2007 13:03:00 GMT</pubDate><guid>http://www.shnenglu.com/xpzhou/archive/2007/04/20/22426.html</guid><wfw:comment>http://www.shnenglu.com/xpzhou/comments/22426.html</wfw:comment><comments>http://www.shnenglu.com/xpzhou/archive/2007/04/20/22426.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/xpzhou/comments/commentRss/22426.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xpzhou/services/trackbacks/22426.html</trackback:ping><description><![CDATA[鍦ㄥ伐涓氱敓浜ф帶鍒剁郴緇熶腑錛屾湁璁稿闇瑕佸畾鏃跺畬鎴愮殑鎿嶄綔錛屽瀹氭椂鏄劇ず褰撳墠鏃墮棿錛屽畾鏃跺埛鏂板睆騫曚笂鐨勮繘搴︽潯錛屼笂浣?wbr> 鏈哄畾鏃跺悜涓嬩綅鏈哄彂閫佸懡浠ゅ拰浼犻佹暟鎹瓑銆傜壒鍒槸鍦ㄥ鎺у埗鎬ц兘瑕佹眰杈冮珮鐨勫疄鏃舵帶鍒剁郴緇熷拰鏁版嵁閲囬泦緋葷粺涓紝灝辨洿闇瑕佺簿紜畾鏃舵搷浣溿?br>銆銆浼楁墍鍛ㄧ煡錛學indows 鏄熀浜庢秷鎭満鍒剁殑緋葷粺錛屼換浣曚簨浠剁殑鎵ц閮芥槸閫氳繃鍙戦佸拰鎺ユ敹娑堟伅鏉ュ畬鎴愮殑銆?wbr> 榪欐牱灝卞甫鏉ヤ簡涓浜涢棶棰橈紝濡備竴鏃﹁綆楁満鐨凜PU琚煇涓繘紼嬪崰鐢紝鎴栫郴緇熻祫婧愮揣寮犳椂錛屽彂閫佸埌娑堟伅闃熷垪<wbr> 涓殑娑堟伅灝辨殏鏃惰鎸傝搗錛屽緱涓嶅埌瀹炴椂澶勭悊銆傚洜姝わ紝涓嶈兘綆鍗曞湴閫氳繃Windows娑堟伅寮曞彂涓涓瀹氭椂瑕佹眰<wbr> 涓ユ牸鐨勪簨浠躲傚彟澶栵紝鐢變簬鍦╓indows涓凡緇忓皝瑁呬簡璁$畻鏈哄簳灞傜‖浠剁殑璁塊棶錛屾墍浠ワ紝瑕佹兂閫氳繃鐩存帴鍒╃敤<wbr> 璁塊棶紜歡鏉ュ畬鎴愮簿紜畾鏃訛紝涔熸瘮杈冨洶闅俱傛墍浠ュ湪瀹為檯搴旂敤鏃訛紝搴旈拡瀵瑰叿浣撳畾鏃剁簿搴︾殑瑕佹眰錛岄噰鍙栫浉閫?搴旂殑瀹氭椂鏂規硶銆?br>銆銆VC涓彁渚涗簡寰堝鍏充簬鏃墮棿鎿嶄綔鐨勫嚱鏁幫紝鍒╃敤瀹冧滑鎺у埗紼嬪簭鑳藉綺劇‘鍦板畬鎴愬畾鏃跺拰璁℃椂鎿嶄綔銆傛湰鏂囪緇嗕粙緇嶄簡<wbr> VC涓熀浜嶹indows鐨勭簿紜畾鏃剁殑涓冪鏂瑰紡錛屽涓嬪浘鎵紺猴細<br><br><img src="http://www.vckbase.com/document/journal/vckbase37/images/MultiTimerDemoimg.gif" border=0><br>鍥句竴 鍥懼儚鎻忚堪 <br><br>銆銆鏂瑰紡涓錛歏C涓殑WM_TIMER娑堟伅鏄犲皠鑳借繘琛岀畝鍗曠殑鏃墮棿鎺у埗銆傞鍏堣皟鐢ㄥ嚱鏁癝etTimer()璁劇疆瀹氭椂<wbr> 闂撮殧錛屽SetTimer(0,200,NULL)鍗充負璁劇疆200ms鐨勬椂闂撮棿闅斻傜劧鍚庡湪搴旂敤紼嬪簭涓鍔犲畾鏃跺搷搴斿嚱鏁?wbr> OnTimer()錛屽茍鍦ㄨ鍑芥暟涓坊鍔犲搷搴旂殑澶勭悊璇彞錛岀敤鏉ュ畬鎴愬埌杈懼畾鏃舵椂闂寸殑鎿嶄綔銆傝繖縐嶅畾鏃舵柟娉曢潪甯?wbr> 綆鍗曪紝鍙互瀹炵幇涓瀹氱殑瀹氭椂鍔熻兘錛屼絾鍏跺畾鏃跺姛鑳藉鍚孲leep()鍑芥暟鐨勫歡鏃跺姛鑳戒竴鏍鳳紝綺懼害闈炲父浣庯紝鏈灝?wbr> 璁℃椂綺懼害浠呬負30ms錛孋PU鍗犵敤浣庯紝涓斿畾鏃跺櫒娑堟伅鍦ㄥ浠誨姟鎿嶄綔緋葷粺涓殑浼樺厛綰у緢浣庯紝涓嶈兘寰楀埌鍙婃椂鍝?wbr> 搴旓紝寰寰涓嶈兘婊¤凍瀹炴椂鎺у埗鐜涓嬬殑搴旂敤銆傚彧鍙互鐢ㄦ潵瀹炵幇璇稿浣嶅浘鐨勫姩鎬佹樉紺虹瓑瀵瑰畾鏃剁簿搴﹁姹備笉楂樼殑鎯呭喌銆傚紺轟緥宸ョ▼涓殑Timer1銆?<br>銆銆鏂瑰紡浜岋細VC涓嬌鐢╯leep()鍑芥暟瀹炵幇寤舵椂錛屽畠鐨勫崟浣嶆槸ms錛屽寤舵椂2縐掞紝鐢╯leep(2000)銆傜簿搴﹂潪甯?wbr> 浣庯紝鏈灝忚鏃剁簿搴︿粎涓?0ms錛岀敤sleep鍑芥暟鐨勪笉鍒╁鍦ㄤ簬寤舵椂鏈熼棿涓嶈兘澶勭悊鍏朵粬鐨勬秷鎭紝濡傛灉鏃墮棿澶?wbr> 闀匡紝灝卞ソ璞℃鏈轟竴鏍鳳紝CPU鍗犵敤鐜囬潪甯擱珮錛屽彧鑳界敤浜庤姹備笉楂樼殑寤舵椂紼嬪簭涓傚紺轟緥宸ョ▼涓殑Timer2銆?br>銆銆鏂瑰紡涓夛細鍒╃敤COleDateTime綾誨拰COleDateTimeSpan綾葷粨鍚圵INDOWS鐨勬秷鎭鐞嗚繃紼嬫潵瀹炵幇縐掔駭寤舵椂銆傚紺轟緥宸ョ▼涓殑Timer3鍜孴imer3_1銆備互涓嬫槸瀹炵幇2縐掔殑寤舵椂浠g爜錛?<br>COleDateTime      start_time = COleDateTime::GetCurrentTime();<br>COleDateTimeSpan  end_time= COleDateTime::GetCurrentTime()-start_time;<br>while(end_time.GetTotalSeconds()< 2) //瀹炵幇寤舵椂2縐?br>{<br>MSG   msg;<br>GetMessage(&msg,NULL,0,0);<br>TranslateMessage(&msg);<br>DispatchMessage(&msg);<br>//浠ヤ笂鍥涜鏄疄鐜板湪寤舵椂鎴栧畾鏃舵湡闂磋兘澶勭悊鍏朵粬鐨勬秷鎭紝<br>//铏界劧榪欐牱鍙互闄嶄綆CPU鐨勫崰鏈夌巼錛?br>//浣嗛檷浣庝簡寤舵椂鎴栧畾鏃剁簿搴︼紝瀹為檯搴旂敤涓彲浠ュ幓鎺夈?br>end_time = COleDateTime::GetCurrentTime()-start_time;<br>}//榪欐牱鍦ㄥ歡鏃剁殑鏃跺欐垜浠篃鑳藉澶勭悊鍏朵粬鐨勬秷鎭?nbsp;     銆銆鏂瑰紡鍥涳細鍦ㄧ簿搴﹁姹傝緝楂樼殑鎯呭喌涓嬶紝VC涓彲浠ュ埄鐢℅etTickCount()鍑芥暟錛岃鍑芥暟鐨勮繑鍥炲兼槸<wbr>  DWORD鍨嬶紝琛ㄧず浠s涓哄崟浣嶇殑璁$畻鏈哄惎鍔ㄥ悗緇忓巻鐨勬椂闂撮棿闅斻傜簿搴︽瘮WM_TIMER娑堟伅鏄犲皠楂橈紝鍦ㄨ緝<wbr> 鐭殑瀹氭椂涓叾璁℃椂璇樊涓?5ms錛屽湪杈冮暱鐨勫畾鏃朵腑鍏惰鏃惰宸緝浣庯紝濡傛灉瀹氭椂鏃墮棿澶暱錛屽氨濂借薄姝繪満涓鏍鳳紝CPU鍗犵敤鐜囬潪甯擱珮錛屽彧鑳界敤浜庤姹備笉楂樼殑寤舵椂紼嬪簭涓傚紺轟緥宸ョ▼涓殑Timer4鍜孴imer4_1銆備笅鍒椾唬鐮佸彲浠ュ疄鐜?0ms鐨勭簿紜畾鏃訛細<br> <pre>DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do { dwEnd = GetTickCount()-dwStart; }while(dwEnd <50);</pre> 涓轟嬌GetTickCount()鍑芥暟鍦ㄥ歡鏃舵垨瀹氭椂鏈熼棿鑳藉鐞嗗叾浠栫殑娑堟伅錛屽彲浠ユ妸浠g爜鏀逛負錛?br> <pre>DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg); dwEnd = GetTickCount()-dwStart; }while(dwEnd <50);</pre> 铏界劧榪欐牱鍙互闄嶄綆CPU鐨勫崰鏈夌巼錛屽茍鍦ㄥ歡鏃舵垨瀹氭椂鏈熼棿涔熻兘澶勭悊鍏朵粬鐨勬秷鎭紝浣嗛檷浣庝簡寤舵椂鎴栧畾鏃剁簿搴︺?br>銆銆鏂瑰紡浜旓細涓嶨etTickCount()鍑芥暟綾諱技鐨勫濯掍綋瀹氭椂鍣ㄥ嚱鏁癉WORD timeGetTime(void)錛岃鍑芥暟瀹氭椂綺?wbr> 搴︿負ms綰э紝榪斿洖浠嶹indows鍚姩寮濮嬬粡榪囩殑姣鏁般傚井杞叕鍙稿湪鍏跺濯掍綋Windows涓彁渚涗簡綺劇‘瀹氭椂鍣ㄧ殑搴?wbr> 灞侫PI鎸侊紝鍒╃敤澶氬獟浣撳畾鏃跺櫒鍙互寰堢簿紜湴璇誨嚭緋葷粺鐨勫綋鍓嶆椂闂達紝騫朵笖鑳藉湪闈炲父綺劇‘鐨勬椂闂撮棿闅斿唴瀹屾垚涓<wbr> 涓簨浠躲佸嚱鏁版垨榪囩▼鐨勮皟鐢ㄣ備笉鍚屼箣澶勫湪浜庤皟鐢―WORD timeGetTime(void) 鍑芥暟涔嬪墠蹇呴』灝?Winmm.lib <wbr> 鍜?Mmsystem.h 娣誨姞鍒板伐紼嬩腑錛屽惁鍒欏湪緙栬瘧鏃舵彁紺篋WORD timeGetTime(void)鍑芥暟鏈畾涔夈傜敱浜庝嬌鐢ㄨ<wbr> 鍑芥暟鏄氳繃鏌ヨ鐨勬柟寮忚繘琛屽畾鏃舵帶鍒剁殑錛屾墍浠ワ紝搴旇寤虹珛瀹氭椂寰幆鏉ヨ繘琛屽畾鏃朵簨浠剁殑鎺у埗銆傚紺轟緥宸ョ▼涓殑Timer5鍜孴imer5_1銆?br>銆銆鏂瑰紡鍏細浣跨敤澶氬獟浣撳畾鏃跺櫒timeSetEvent()鍑芥暟錛岃鍑芥暟瀹氭椂綺懼害涓簃s綰с傚埄鐢ㄨ鍑芥暟鍙互瀹炵幇鍛ㄦ湡鎬х殑鍑芥暟璋冪敤銆傚紺轟緥宸ョ▼涓殑Timer6鍜孴imer6_1銆傚嚱鏁扮殑鍘熷瀷濡備笅錛?<br> <pre>MMRESULT timeSetEvent錛?UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, WORD dwUser, UINT fuEvent 錛?/pre> 銆銆璇ュ嚱鏁拌緗竴涓畾鏃跺洖璋冧簨浠訛紝姝や簨浠跺彲浠ユ槸涓涓竴嬈℃т簨浠舵垨鍛ㄦ湡鎬т簨浠躲備簨浠朵竴鏃﹁嬋媧伙紝渚胯皟鐢ㄦ寚瀹氱殑鍥炶皟鍑芥暟錛?wbr> 鎴愬姛鍚庤繑鍥炰簨浠剁殑鏍囪瘑絎︿唬鐮侊紝鍚﹀垯榪斿洖NULL銆傚嚱鏁扮殑鍙傛暟璇存槑濡備笅錛?br> <pre>uDelay錛氫互姣鎸囧畾浜嬩歡鐨勫懆鏈熴? Uresolution錛氫互姣鎸囧畾寤舵椂鐨勭簿搴︼紝鏁板艱秺灝忓畾鏃跺櫒浜嬩歡鍒嗚鯨鐜囪秺楂樸傜己鐪佸間負1ms銆? LpTimeProc錛氭寚鍚戜竴涓洖璋冨嚱鏁般? DwUser錛氬瓨鏀劇敤鎴鋒彁渚涚殑鍥炶皟鏁版嵁銆? FuEvent錛氭寚瀹氬畾鏃跺櫒浜嬩歡綾誨瀷錛? TIME_ONESHOT錛歶Delay姣鍚庡彧浜х敓涓嬈′簨浠? TIME_PERIODIC 錛氭瘡闅攗Delay姣鍛ㄦ湡鎬у湴浜х敓浜嬩歡銆? </pre> 銆銆鍏蜂綋搴旂敤鏃訛紝鍙互閫氳繃璋冪敤timeSetEvent()鍑芥暟錛屽皢闇瑕佸懆鏈熸ф墽琛岀殑浠誨姟瀹氫箟鍦↙pTimeProc鍥炶皟鍑芥暟<wbr> 涓?濡傦細瀹氭椂閲囨牱銆佹帶鍒剁瓑)錛屼粠鑰屽畬鎴愭墍闇澶勭悊鐨勪簨浠躲傞渶瑕佹敞鎰忕殑鏄紝浠誨姟澶勭悊鐨勬椂闂翠笉鑳藉ぇ浜庡懆鏈熼棿闅旀椂闂淬傚彟澶栵紝鍦ㄥ畾鏃跺櫒浣跨敤瀹屾瘯鍚庯紝<wbr> 搴斿強鏃惰皟鐢╰imeKillEvent()灝嗕箣閲婃斁銆?<br>銆銆鏂瑰紡涓冿細瀵逛簬綺劇‘搴﹁姹傛洿楂樼殑瀹氭椂鎿嶄綔錛屽垯搴旇浣跨敤QueryPerformanceFrequency()鍜?wbr> QueryPerformanceCounter()鍑芥暟銆傝繖涓や釜鍑芥暟鏄疺C鎻愪緵鐨勪粎渚沇indows 95鍙婂叾鍚庣畫鐗堟湰浣跨敤鐨勭簿紜椂闂村嚱鏁幫紝騫惰姹傝綆楁満浠庣‖浠朵笂鏀寔綺劇‘瀹氭椂鍣ㄣ傚紺轟緥宸ョ▼涓殑Timer7銆乀imer7_1銆乀imer7_2銆乀imer7_3銆?br>QueryPerformanceFrequency()鍑芥暟鍜孮ueryPerformanceCounter()鍑芥暟鐨勫師鍨嬪涓嬶細<br> <pre>BOOL QueryPerformanceFrequency(LARGE_INTEGER 錛妉pFrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER 錛妉pCount);</pre> 銆銆鏁版嵁綾誨瀷ARGE_INTEGER鏃㈠彲浠ユ槸涓涓?瀛楄妭闀跨殑鏁村瀷鏁幫紝涔熷彲浠ユ槸涓や釜4瀛楄妭闀跨殑鏁村瀷鏁扮殑鑱斿悎緇撴瀯錛?wbr> 鍏跺叿浣撶敤娉曟牴鎹紪璇戝櫒鏄惁鏀寔64浣嶈屽畾銆傝綾誨瀷鐨勫畾涔夊涓嬶細<br> <pre>typedef union _LARGE_INTEGER { struct { DWORD LowPart ;// 4瀛楄妭鏁村瀷鏁? LONG HighPart;// 4瀛楄妭鏁村瀷鏁? }; LONGLONG QuadPart ;// 8瀛楄妭鏁村瀷鏁? }LARGE_INTEGER ;</pre> 銆銆鍦ㄨ繘琛屽畾鏃朵箣鍓嶏紝鍏堣皟鐢≦ueryPerformanceFrequency()鍑芥暟鑾峰緱鏈哄櫒鍐呴儴瀹氭椂鍣ㄧ殑鏃墮挓棰戠巼錛?wbr> 鐒跺悗鍦ㄩ渶瑕佷弗鏍煎畾鏃剁殑浜嬩歡鍙戠敓涔嬪墠鍜屽彂鐢熶箣鍚庡垎鍒皟鐢≦ueryPerformanceCounter()鍑芥暟錛屽埄鐢ㄤ袱嬈¤幏寰楃殑璁℃暟涔嬪樊鍙婃椂閽熼鐜囷紝璁$畻鍑轟簨浠剁粡<wbr> 鍘嗙殑綺劇‘鏃墮棿銆備笅鍒椾唬鐮佸疄鐜?ms鐨勭簿紜畾鏃訛細<br> <pre>LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 }while(dfTim<0.001);</pre> 銆銆鍏跺畾鏃惰宸笉瓚呰繃1寰錛岀簿搴︿笌CPU絳夋満鍣ㄩ厤緗湁鍏熾?涓嬮潰鐨勭▼搴忕敤鏉ユ祴璇曞嚱鏁癝leep(100)鐨勭簿紜寔緇椂闂達細<br> <pre>LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? Sleep(100); QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 </pre> 銆銆鐢變簬Sleep()鍑芥暟鑷韓鐨勮宸紝涓婅堪紼嬪簭姣忔鎵ц鐨勭粨鏋滈兘浼氭湁寰皬璇樊銆備笅鍒椾唬鐮佸疄鐜?寰鐨勭簿紜畾鏃訛細<br> <pre>LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 }while(dfTim<0.000001);</pre> 鍏跺畾鏃惰宸竴鑸笉瓚呰繃0.5寰錛岀簿搴︿笌CPU絳夋満鍣ㄩ厤緗湁鍏熾?br> <p><a >紺轟緥宸ョ▼涓嬭澆</a><br><br></p><img src ="http://www.shnenglu.com/xpzhou/aggbug/22426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xpzhou/" target="_blank">姒曟爲钘?/a> 2007-04-20 21:03 <a href="http://www.shnenglu.com/xpzhou/archive/2007/04/20/22426.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>STL瀹炶返鎸囧崡http://www.shnenglu.com/xpzhou/archive/2007/04/20/22341.html姒曟爲钘?/dc:creator>姒曟爲钘?/author>Fri, 20 Apr 2007 00:18:00 GMThttp://www.shnenglu.com/xpzhou/archive/2007/04/20/22341.htmlhttp://www.shnenglu.com/xpzhou/comments/22341.htmlhttp://www.shnenglu.com/xpzhou/archive/2007/04/20/22341.html#Feedback0http://www.shnenglu.com/xpzhou/comments/commentRss/22341.htmlhttp://www.shnenglu.com/xpzhou/services/trackbacks/22341.html浠嬬粛
榪欐槸涓綃囨寚瀵兼偍濡備綍鍦∕icrosoft Visual Studio涓嬪涔燬TL騫惰繘琛屽疄璺電殑鏂囩珷銆傝繖綃囨枃绔犱粠STL鐨勫熀紜鐭ヨ瘑璁茶搗錛屽驚搴忔笎榪涳紝閫愭娣卞叆錛屾秹鍙婂埌浜哠TL緙栧啓浠g爜鐨勬柟娉曘丼TL浠g爜鐨勭紪璇戝拰璋冭瘯銆佸懡鍚嶇┖闂達紙namespace錛夈丼TL涓殑ANSI / ISO瀛楃涓層佸悇縐嶄笉鍚岀被鍨嬬殑瀹瑰櫒錛坈ontainer錛夈佹ā鏉匡紙template錛夈佹父鏍囷紙Iterator錛夈佺畻娉曪紙Algorithms錛夈佸垎閰嶅櫒錛圓llocator錛夈佸鍣ㄧ殑宓屽絳夋柟闈㈢殑闂錛屼綔鑰呭湪榪欑瘒鏂囩珷涓璇昏呮彁鍑轟簡涓浜涘緩璁紝騫舵寚鍑轟簡浣跨敤STL鏃跺簲璇ユ敞鎰忕殑闂銆傝繖綃囨枃绔犺鐩栭潰騫匡紝瑙嗚鍏ㄩ潰銆備笉浠呬粎閫傚悎鍒濆鑰呭涔燬TL錛屾洿鏄箍澶ц鑰呬嬌鐢⊿TL緙栫▼鐨勫疄璺墊寚鍗椼?


榪欐槸涓綃囨寚瀵兼偍濡備綍鍦∕icrosoft Visual Studio涓嬪涔燬TL騫惰繘琛屽疄璺電殑鏂囩珷銆傝繖綃囨枃绔犱粠STL鐨勫熀紜鐭ヨ瘑璁茶搗錛屽驚搴忔笎榪涳紝閫愭娣卞叆錛屾秹鍙婂埌浜哠TL緙栧啓浠g爜鐨勬柟娉曘丼TL浠g爜鐨勭紪璇戝拰璋冭瘯銆佸懡鍚嶇┖闂達紙namespace錛夈丼TL涓殑ANSI / ISO瀛楃涓層佸悇縐嶄笉鍚岀被鍨嬬殑瀹瑰櫒錛坈ontainer錛夈佹ā鏉匡紙template錛夈佹父鏍囷紙Iterator錛夈佺畻娉曪紙Algorithms錛夈佸垎閰嶅櫒錛圓llocator錛夈佸鍣ㄧ殑宓屽絳夋柟闈㈢殑闂錛屼綔鑰呭湪榪欑瘒鏂囩珷涓璇昏呮彁鍑轟簡涓浜涘緩璁紝騫舵寚鍑轟簡浣跨敤STL鏃跺簲璇ユ敞鎰忕殑闂銆傝繖綃囨枃绔犺鐩栭潰騫匡紝瑙嗚鍏ㄩ潰銆備笉浠呬粎閫傚悎鍒濆鑰呭涔燬TL錛屾洿鏄箍澶ц鑰呬嬌鐢⊿TL緙栫▼鐨勫疄璺墊寚鍗椼?br>
STL綆浠?br>
STL (鏍囧噯妯$増搴擄紝Standard Template Library)鏄綋浠婃瘡涓粠浜婥++緙栫▼鐨勪漢闇瑕佹帉鎻$殑涓欏逛笉閿欑殑鎶鏈傛垜瑙夊緱姣忎竴涓垵瀛TL鐨勪漢搴旇鑺辮垂涓孌墊椂闂存潵鐔熸倝瀹冿紝姣斿錛屽涔燬TL鏃朵細鏈夋ュ墽鍗囬檷鐨勫涔犳洸綰匡紝騫朵笖鏈変竴浜涘懡鍚嶆槸涓嶅お瀹規槗鍑洿瑙夊氨鑳藉璁頒綇鐨勶紙涔熻鏄ソ璁扮殑鍚嶅瓧宸茬粡琚敤鍏変簡錛夛紝鐒惰屽鏋滀竴鏃︿綘鎺屾彙浜哠TL錛屼綘灝變笉浼氳寰楀ご鐥涗簡銆傚拰MFC鐩告瘮錛孲TL鏇村姞澶嶆潅鍜屽己澶с?br>STL鏈変互涓嬬殑涓浜涗紭鐐癸細

鍙互鏂逛究瀹規槗鍦板疄鐜版悳绱㈡暟鎹垨瀵規暟鎹帓搴忕瓑涓緋誨垪鐨勭畻娉曪紱

璋冭瘯紼嬪簭鏃舵洿鍔犲畨鍏ㄥ拰鏂逛究錛?br>
鍗充嬌鏄漢浠敤STL鍦║NIX騫沖彴涓嬪啓鐨勪唬鐮佷綘涔熷彲浠ュ緢瀹規槗鍦扮悊瑙o紙鍥犱負STL鏄法騫沖彴鐨勶級銆?br>
鑳屾櫙鐭ヨ瘑

鍐欒繖涓閮ㄥ垎鏄涓浜涘垵瀛﹁綆楁満鐨勮鑰呭湪瀵屾湁鎸戞垬鎬х殑璁$畻鏈虹瀛﹂鍩熸湁涓涓壇濂界殑寮绔紝鑰屼笉蹇呰垂鍔涘湴浜嗚В閭f棤絀鋒棤灝界殑琛岃瘽鏈鍜屾矇闂風殑瑙勫垯錛屽湪榪欓噷浠呬粎鎶婇偅浜涜璇濆拰瑙勫垯褰撲綔STLer浠敤浜庤嚜濞辯殑鍒涢犲搧鍚с?br>
浣跨敤浠g爜
鏈枃浣跨敤鐨勪唬鐮佸湪STL瀹炶返涓富瑕佸叿鏈夋寚瀵兼剰涔夈?br>
涓浜涘熀紜姒傚康鐨勫畾涔?br>
妯℃澘錛圱emplate錛夆斺旂被錛堜互鍙婄粨鏋勭瓑鍚勭鏁版嵁綾誨瀷鍜屽嚱鏁幫級鐨勫畯錛坢acro錛夈傛湁鏃跺彨鍋氱敎楗煎垏鍓叉満錛坈ookie cutter錛夛紝姝h鐨勫悕縐板簲鍙仛鑼冨瀷錛坓eneric錛夆斺斾竴涓被鐨勬ā鏉垮彨鍋氳寖鍨嬬被錛坓eneric class錛夛紝鑰屼竴涓嚱鏁扮殑妯℃澘涔熻嚜鐒惰岀劧鍦拌鍙仛鑼冨瀷鍑芥暟錛坓eneric function錛夈?br>STL鈥斺旀爣鍑嗘ā鏉垮簱錛屼竴浜涜仾鏄庝漢鍐欑殑涓浜涙ā鏉匡紝鐜板湪宸叉垚涓烘瘡涓漢鎵浣跨敤鐨勬爣鍑咰++璇█涓殑涓閮ㄥ垎銆?br>瀹瑰櫒錛圕ontainer錛夆斺斿彲瀹圭撼涓浜涙暟鎹殑妯℃澘綾匯係TL涓湁vector錛宻et錛宮ap錛宮ultimap鍜宒eque絳夊鍣ㄣ?br>鍚戦噺錛圴ector錛夆斺斿熀鏈暟緇勬ā鏉匡紝榪欐槸涓涓鍣ㄣ?br>娓告爣錛圛terator錛夆斺旇繖鏄竴涓鐗圭殑涓滆タ錛屽畠鏄竴涓寚閽堬紝鐢ㄦ潵鎸囧悜STL瀹瑰櫒涓殑鍏冪礌錛屼篃鍙互鎸囧悜鍏跺畠鐨勫厓绱犮?br>
Hello World紼嬪簭

鎴戞効鎰忓湪鎴戠殑榛勯噾鏃墮棿鍦ㄨ繖閲屽啓涓嬫垜鐨勭▼搴忥細涓涓猦ello world紼嬪簭銆傝繖涓▼搴忓皢涓涓瓧絎︿覆浼犻佸埌涓涓瓧絎﹀悜閲忎腑錛岀劧鍚庢瘡嬈℃樉紺哄悜閲忎腑鐨勪竴涓瓧絎︺傚悜閲忓氨鍍忔槸鐩涙斁鍙橀暱鏁扮粍鐨勮姳鍥紝澶х害鎵鏈塖TL瀹瑰櫒涓湁涓鍗婃槸鍩轟簬鍚戦噺鐨勶紝濡傛灉浣犳帉鎻′簡榪欎釜紼嬪簭錛屼綘渚垮樊涓嶅鎺屾彙浜嗘暣涓猄TL鐨勪竴鍗婁簡銆?br>

//紼嬪簭錛歷ector婕旂ず涓
//鐩殑錛氱悊瑙TL涓殑鍚戦噺

// #include "stdafx.h" -濡傛灉浣犱嬌鐢ㄩ緙栬瘧鐨勫ご鏂囦歡灝卞寘鍚繖涓ご鏂囦歡
#include <vector>  // STL鍚戦噺鐨勫ご鏂囦歡銆傝繖閲屾病鏈?.h"銆?br>#include <iostream>  // 鍖呭惈cout瀵硅薄鐨勫ご鏂囦歡銆?br>using namespace std;  //淇濊瘉鍦ㄧ▼搴忎腑鍙互浣跨敤std鍛藉悕絀洪棿涓殑鎴愬憳銆?br>
char* szHW = "Hello World";  
//榪欐槸涓涓瓧絎︽暟緇勶紝浠?#8221;\0”緇撴潫銆?br>
int main(int argc, char* argv[])
{
  vector <char> vec;  //澹版槑涓涓瓧絎﹀悜閲弙ector (STL涓殑鏁扮粍)

  //涓哄瓧絎︽暟緇勫畾涔変竴涓父鏍噄terator銆?br>  vector <char>::iterator vi;

  //鍒濆鍖栧瓧絎﹀悜閲忥紝瀵規暣涓瓧絎︿覆榪涜寰幆錛?br>  //鐢ㄦ潵鎶婃暟鎹~鏀懼埌瀛楃鍚戦噺涓紝鐩村埌閬囧埌”\0”鏃剁粨鏉熴?br>  char* cptr = szHW;  // 灝嗕竴涓寚閽堟寚鍚?#8220;Hello World”瀛楃涓?br>  while (*cptr != '\0')
  {  vec.push_back(*cptr);  cptr++;  }
  // push_back鍑芥暟灝嗘暟鎹斁鍦ㄥ悜閲忕殑灝鵑儴銆?br>
  // 灝嗗悜閲忎腑鐨勫瓧絎︿竴涓釜鍦版樉紺哄湪鎺у埗鍙?br>  for (vi=vec.begin(); vi!=vec.end(); vi++)  
  // 榪欐槸STL寰幆鐨勮鑼冨寲鐨勫紑濮嬧斺旈氬父鏄?"!=" 錛?鑰屼笉鏄?"<"
  // 鍥犱負"<" 鍦ㄤ竴浜涘鍣ㄤ腑娌℃湁瀹氫箟銆?
  // begin()榪斿洖鍚戦噺璧峰鍏冪礌鐨勬父鏍囷紙iterator錛夛紝end()榪斿洖鍚戦噺鏈熬鍏冪礌鐨勬父鏍囷紙iterator錛夈?br>  {  cout << *vi;  }  // 浣跨敤榪愮畻絎?“*” 灝嗘暟鎹粠娓告爣鎸囬拡涓彁鍙栧嚭鏉ャ?br>  cout << endl;  // 鎹㈣

  return 0;
}


push_back鏄皢鏁版嵁鏀懼叆vector錛堝悜閲忥級鎴杁eque錛堝弻绔槦鍒楋級鐨勬爣鍑嗗嚱鏁般侷nsert鏄竴涓笌涔嬬被浼肩殑鍑芥暟錛岀劧鑰屽畠鍦ㄦ墍鏈夊鍣ㄤ腑閮藉彲浠ヤ嬌鐢紝浣嗘槸鐢ㄦ硶鏇村姞澶嶆潅銆俥nd()瀹為檯涓婃槸鍙栨湯灝懼姞涓錛堝彇瀹瑰櫒涓湯灝劇殑鍓嶄竴涓厓绱狅級錛屼互渚胯寰幆姝g‘榪愯鈥斺斿畠榪斿洖鐨勬寚閽堟寚鍚戞渶闈犺繎鏁扮粍鐣岄檺鐨勬暟鎹傚氨鍍忔櫘閫氬驚鐜腑鐨勬暟緇勶紝姣斿for (i=0; i<6; i++) {ar[i] = i;} 鈥斺攁r[6]鏄笉瀛樺湪鐨勶紝鍦ㄥ驚鐜腑涓嶄細杈懼埌榪欎釜鍏冪礌錛屾墍浠ュ湪寰幆涓笉浼氬嚭鐜伴棶棰樸?br>
STL鐨勭儲鎭間箣涓鈥斺斿垵濮嬪寲

STL浠や漢鐑︽伡鐨勫湴鏂規槸鍦ㄥ畠鍒濆鍖栫殑鏃跺欍係TL涓鍣ㄧ殑鍒濆鍖栨瘮C/C++鏁扮粍鍒濆鍖栬楹葷儲鐨勫銆備綘鍙兘涓涓厓绱犱竴涓厓绱犲湴鏉ワ紝鎴栬呭厛鍒濆鍖栦竴涓櫘閫氭暟緇勫啀閫氳繃杞寲濉斁鍒板鍣ㄤ腑銆傛垜璁や負浜轟滑閫氬父鍙互榪欐牱鍋氾細


//紼嬪簭錛氬垵濮嬪寲婕旂ず
//鐩殑錛氫負浜嗚鏄嶴TL涓殑鍚戦噺鏄庢牱鍒濆鍖栫殑銆?br>
#include <cstring>  // <cstring>鍜?lt;string.h>鐩稿悓
#include <vector>
using namespace std;

int ar[10] = {  12, 45, 234, 64, 12, 35, 63, 23, 12, 55  };
char* str = "Hello World";

int main(int argc, char* argv[])
{
  vector <int> vec1(ar, ar+10);
  vector <char> vec2(str, str+strlen(str));
  return 0;
}



鍦ㄧ紪紼嬩腑錛屾湁寰堝縐嶆柟娉曟潵瀹屾垚鍚屾牱鐨勫伐浣溿傚彟涓縐嶅~鍏呭悜閲忕殑鏂規硶鏄敤鏇村姞鐔熸倝鐨勬柟鎷彿錛屾瘮濡備笅闈㈢殑紼嬪簭錛?br>
//紼嬪簭錛歷ector婕旂ず浜?br>//鐩殑錛氱悊瑙e甫鏈夋暟緇勪笅鏍囧拰鏂規嫭鍙風殑STL鍚戦噺

#include <cstring>
#include <vector>
#include <iostream>
using namespace std;

char* szHW = "Hello World";
int main(int argc, char* argv[])
{
  vector <char> vec(strlen(sHW)); //涓哄悜閲忓垎閰嶅唴瀛樼┖闂?br>  int i, k = 0;
  char* cptr = szHW;
  while (*cptr != '\0')
  {  vec[k] = *cptr;  cptr++;  k++;  }
  for (i=0; i<vec.size(); i++)
  {  cout << vec[i];  }
  cout << endl;
  return 0;
}


榪欎釜渚嬪瓙鏇村姞娓呮櫚錛屼絾鏄娓告爣錛坕terator錛夌殑鎿嶄綔灝戜簡錛屽茍涓斿畾涔変簡棰濆鐨勬暣褰㈡暟浣滀負涓嬫爣錛岃屼笖錛屼綘蹇呴』娓呮鍦板湪紼嬪簭涓鏄庝負鍚戦噺鍒嗛厤澶氬皯鍐呭瓨絀洪棿銆?br>
鍛藉悕絀洪棿錛圢amespace錛?br>
涓嶴TL鐩稿叧鐨勬蹇墊槸鍛藉悕絀洪棿錛坣amespace錛夈係TL瀹氫箟鍦╯td鍛藉悕絀洪棿涓傛湁3縐嶆柟娉曞0鏄庝嬌鐢ㄧ殑鍛藉悕絀洪棿錛?br>
1錛庣敤using鍏抽敭瀛椾嬌鐢ㄨ繖涓懡鍚嶇┖闂達紝鍦ㄦ枃浠剁殑欏墮儴錛屼絾鍦ㄥ0鏄庣殑澶存枃浠朵笅闈㈠姞鍏ワ細
using namespace std;
榪欏鍗曚釜宸ョ▼鏉ヨ鏄渶綆鍗曚篃鏄渶濂界殑鏂規硶錛岃繖涓柟娉曞彲浠ユ妸浣犵殑浠g爜闄愬畾鍦╯td鍛藉悕絀洪棿涓?br>
2錛庝嬌鐢ㄦ瘡涓涓ā鏉垮墠瀵規瘡涓涓浣跨敤鐨勫璞¤繘琛屽0鏄庯紙灝卞儚鍘熷艦鍖栵級錛?br>using std::cout;
using std::endl;
using std::flush;
using std::set;
using std::inserter;
灝界榪欐牱鍐欐湁浜涘啑闀匡紝浣嗗彲浠ュ璁板繂浣跨敤鐨勫嚱鏁版瘮杈冩湁鍒╋紝騫朵笖浣犲彲浠ュ鏄撳湴澹版槑騫朵嬌鐢ㄥ叾浠栧懡鍚嶇┖闂翠腑鐨勬垚鍛樸?br>
3錛庡湪姣忎竴嬈′嬌鐢╯td鍛藉悕絀洪棿涓殑妯$増鏃訛紝浣跨敤std鍩熸爣璇嗙銆傛瘮濡傦細
typedef std::vector VEC_STR;
榪欑鏂規硶铏界劧鍐欒搗鏉ユ瘮杈冨啑闀匡紝浣嗘槸鏄湪娣峰悎浣跨敤澶氫釜鍛藉悕絀洪棿鏃剁殑鏈濂芥柟娉曘備竴浜汼TL鐨勭媯鐑呬竴鐩翠嬌鐢ㄨ繖縐嶆柟娉曪紝騫朵笖鎶婁笉浣跨敤榪欑鏂規硶鐨勪漢瑙嗕負寮傜被銆備竴浜涗漢浼氶氳繃榪欑鏂規硶寤虹珛涓浜涘畯鏉ョ畝鍖栭棶棰樸?br>
闄ゆ涔嬪錛屼綘鍙互鎶妘sing namespace std鍔犲叆鍒頒換浣曞煙涓紝姣斿鍙互鍔犲叆鍒板嚱鏁扮殑澶撮儴鎴栦竴涓帶鍒跺驚鐜綋涓?br>
涓浜涘緩璁?br>
涓轟簡閬垮厤鍦ㄨ皟璇曟ā寮忥紙debug mode錛夊嚭鐜版伡浜虹殑璀﹀憡錛屼嬌鐢ㄤ笅闈㈢殑緙栬瘧鍣ㄥ懡浠わ細

#pragma warning(disable: 4786)

鍙︿竴鏉¢渶瑕佹敞鎰忕殑鏄紝浣犲繀欏葷‘淇濆湪涓や釜灝栨嫭鍙蜂箣闂存垨灝栨嫭鍙峰拰鍚嶅瓧涔嬮棿鐢ㄧ┖鏍奸殧寮錛屽洜涓烘槸涓轟簡閬垮厤鍚?#8220;>>”縐諱綅榪愮畻絎︽販娣嗐傛瘮濡?br>vector <list<int>> veclis;
榪欐牱鍐欎細鎶ラ敊錛岃岃繖鏍峰啓錛?br>vector <list <int> > veclis;
灝卞彲浠ラ伩鍏嶉敊璇?br>
                                STL瀹炶返鎸囧崡錛堜腑錛?br>
STL瀹炶返鎸囧崡  Practical Guide to STL
浣滆咃細Jeff Bogan
緲昏瘧錛氬懆緲?br>

錛堟帴涓婄瘒錛?br>
鍙︿竴縐嶅鍣ㄢ斺旈泦鍚堬紙set錛?br>
榪欐槸寰蔣甯姪鏂囨。涓闆嗗悎錛坰et錛夌殑瑙i噴錛?#8220;鎻忚堪浜嗕竴涓帶鍒跺彉闀垮厓绱犲簭鍒楃殑瀵硅薄錛堟敞錛歴et涓殑key鍜寁alue鏄疜ey綾誨瀷鐨勶紝鑰宮ap涓殑key鍜寁alue鏄竴涓猵air緇撴瀯涓殑涓や釜鍒嗛噺錛夌殑妯℃澘綾伙紝姣忎竴涓厓绱犲寘鍚簡涓涓帓搴忛敭錛坰ort key錛夊拰涓涓?value)銆傚榪欎釜搴忓垪鍙互榪涜鏌ユ壘銆佹彃鍏ャ佸垹闄ゅ簭鍒椾腑鐨勪換鎰忎竴涓厓绱狅紝鑰屽畬鎴愯繖浜涙搷浣滅殑鏃墮棿鍚岃繖涓簭鍒椾腑鍏冪礌涓暟鐨勫鏁版垚姣斾緥鍏崇郴錛屽茍涓斿綋娓告爣鎸囧悜涓涓凡鍒犻櫎鐨勫厓绱犳椂錛屽垹闄ゆ搷浣滄棤鏁堛?#8221;
鑰屼竴涓粡榪囨洿姝g殑鍜屾洿鍔犲疄闄呯殑瀹氫箟搴旇鏄細涓涓泦鍚堬紙set錛夋槸涓涓鍣紝瀹冨叾涓墍鍖呭惈鐨勫厓绱犵殑鍊兼槸鍞竴鐨勩傝繖鍦ㄦ敹闆嗕竴涓暟鎹殑鍏蜂綋鍊肩殑鏃跺欐槸鏈夌敤鐨勩傞泦鍚堜腑鐨勫厓绱犳寜涓瀹氱殑欏哄簭鎺掑垪錛屽茍琚綔涓洪泦鍚堜腑鐨勫疄渚嬨傚鏋滀綘闇瑕佷竴涓敭/鍊煎錛坧air錛夋潵瀛樺偍鏁版嵁錛宮ap鏄竴涓洿濂界殑閫夋嫨銆備竴涓泦鍚堥氳繃涓涓摼琛ㄦ潵緇勭粐錛屽湪鎻掑叆鎿嶄綔鍜屽垹闄ゆ搷浣滀笂姣斿悜閲忥紙vector錛夊揩錛屼絾鏌ユ壘鎴栨坊鍔犳湯灝劇殑鍏冪礌鏃朵細鏈変簺鎱€?br>涓嬮潰鏄竴涓緥瀛愶細

//紼嬪簭錛歴et婕旂ず
//鐩殑錛氱悊瑙TL涓殑闆嗗悎錛坰et錛?br>
#include <string>
#include <set>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
  set <string> strset;
  set <string>::iterator si;
  strset.insert("cantaloupes");
  strset.insert("apple");
  strset.insert("orange");
  strset.insert("banana");
  strset.insert("grapes");
  strset.insert("grapes");  
  for (si=strset.begin(); si!=strset.end(); si++)  
  {  cout << *si << " ";  }
  cout << endl;
  return 0;
}

// 杈撳嚭錛?apple banana cantaloupes grapes orange
//娉ㄦ剰錛氳緭鍑虹殑闆嗗悎涓殑鍏冪礌鏄寜瀛楁瘝澶у皬欏哄簭鎺掑垪鐨勶紝鑰屼笖姣忎釜鍊奸兘涓嶉噸澶嶃?br>

濡傛灉浣犳劅鍏磋叮鐨勮瘽錛屼綘鍙互灝嗚緭鍑哄驚鐜敤涓嬮潰鐨勪唬鐮佹浛鎹細

copy(strset.begin(), strset.end(), ostream_iterator<string>(cout, " "));

.闆嗗悎錛坰et錛夎櫧鐒舵洿寮哄ぇ錛屼絾鎴戜釜浜鴻涓哄畠鏈変簺涓嶆竻鏅扮殑鍦版柟鑰屼笖鏇村鏄撳嚭閿欙紝濡傛灉浣犳槑鐧戒簡榪欎竴鐐癸紝浣犱細鐭ラ亾鐢ㄩ泦鍚堬紙set錛夊彲浠ュ仛浠涔堛?br>
鎵鏈夌殑STL瀹瑰櫒

瀹瑰櫒錛圕ontainer錛夌殑姒傚康鐨勫嚭鐜版棭浜庢ā鏉匡紙template錛夛紝瀹冨師鏈槸涓涓綆楁満縐戝棰嗗煙涓殑涓涓噸瑕佹蹇碉紝浣嗗湪榪欓噷錛屽畠鐨勬蹇靛拰STL娣峰悎鍦ㄤ竴璧蜂簡銆備笅闈㈡槸鍦⊿TL涓嚭鐜扮殑7縐嶅鍣細

vector錛堝悜閲忥級鈥斺擲TL涓爣鍑嗚屽畨鍏ㄧ殑鏁扮粍銆傚彧鑳藉湪vector 鐨?#8220;鍓嶉潰”澧炲姞鏁版嵁銆?br>deque錛堝弻绔槦鍒梔ouble-ended queue錛夆斺斿湪鍔熻兘涓婂拰vector鐩鎬技錛屼絾鏄彲浠ュ湪鍓嶅悗涓ょ鍚戝叾涓坊鍔犳暟鎹?
list錛堝垪琛級鈥斺旀父鏍囦竴嬈″彧鍙互縐誨姩涓姝ャ傚鏋滀綘瀵歸摼琛ㄥ凡緇忓緢鐔熸倝錛岄偅涔圫TL涓殑list鍒欐槸涓涓弻鍚戦摼琛紙姣忎釜鑺傜偣鏈夋寚鍚戝墠椹卞拰鎸囧悜鍚庣戶鐨勪袱涓寚閽堬級銆?br>set錛堥泦鍚堬級鈥斺斿寘鍚簡緇忚繃鎺掑簭浜嗙殑鏁版嵁錛岃繖浜涙暟鎹殑鍊?value)蹇呴』鏄敮涓鐨勩?br>map錛堟槧灝勶級鈥斺旂粡榪囨帓搴忎簡鐨勪簩鍏冪粍鐨勯泦鍚堬紝map涓殑姣忎釜鍏冪礌閮芥槸鐢變袱涓肩粍鎴愶紝鍏朵腑鐨刱ey錛堥敭鍊鹼紝涓涓猰ap涓殑閿煎繀欏繪槸鍞竴鐨勶級鏄湪鎺掑簭鎴栨悳绱㈡椂浣跨敤錛屽畠鐨勫煎彲浠ュ湪瀹瑰櫒涓噸鏂拌幏鍙栵紱鑰屽彟涓涓兼槸璇ュ厓绱犲叧鑱旂殑鏁板箋傛瘮濡傦紝闄や簡鍙互ar[43] = "overripe"榪欐牱鎵懼埌涓涓暟鎹紝map榪樺彲浠ラ氳繃ar["banana"] = "overripe"榪欐牱鐨勬柟娉曟壘鍒頒竴涓暟鎹傚鏋滀綘鎯寵幏寰楀叾涓殑鍏冪礌淇℃伅錛岄氳繃杈撳叆鍏冪礌鐨勫叏鍚嶅氨鍙互杞繪澗瀹炵幇銆?br>multiset錛堝閲嶉泦錛夆斺斿拰闆嗗悎錛坰et錛夌浉浼鹼紝鐒惰屽叾涓殑鍊間笉瑕佹眰蹇呴』鏄敮涓鐨勶紙鍗沖彲浠ユ湁閲嶅錛夈?br>multimap錛堝閲嶆槧灝勶級鈥斺斿拰鏄犲皠錛坢ap錛夌浉浼鹼紝鐒惰屽叾涓殑閿間笉瑕佹眰蹇呴』鏄敮涓鐨勶紙鍗沖彲浠ユ湁閲嶅錛夈?br>娉ㄦ剰錛氬鏋滀綘闃呰寰蔣鐨勫府鍔╂枃妗o紝浣犱細閬囧埌瀵規瘡縐嶅鍣ㄧ殑鏁堢巼鐨勯檲榪般傛瘮濡傦細log(n*n)鐨勬彃鍏ユ椂闂淬傞櫎闈炰綘瑕佸鐞嗗ぇ閲忕殑鏁版嵁錛屽惁鍒欒繖浜涙椂闂寸殑褰卞搷鏄彲浠ュ拷鐣ョ殑銆傚鏋滀綘鍙戠幇浣犵殑紼嬪簭鏈夋槑鏄劇殑婊炲悗鎰熸垨鑰呴渶瑕佸鐞嗘椂闂存敻鍏籌紙time critical錛夌殑浜嬫儏錛屼綘鍙互鍘諱簡瑙f洿澶氭湁鍏沖悇縐嶅鍣ㄨ繍琛屾晥鐜囩殑璇濋銆?br>
鎬庢牱鍦ㄤ竴涓猰ap涓嬌鐢ㄧ被錛?br>
Map鏄竴涓氳繃key錛堥敭錛夋潵鑾峰緱value(鍊?鐨勬ā鏉跨被銆?br>鍙︿竴涓棶棰樻槸浣犲笇鏈涘湪map涓嬌鐢ㄨ嚜宸辯殑綾昏屼笉鏄凡鏈夌殑鏁版嵁綾誨瀷錛屾瘮濡傜幇鍦ㄥ凡緇忕敤榪囩殑int銆傚緩绔嬩竴涓?#8220;涓烘ā鏉垮噯澶囩殑錛坱emplate-ready錛?#8221;綾伙紝浣犲繀欏葷‘淇濆湪璇ョ被涓寘鍚竴浜涙垚鍛樺嚱鏁板拰閲嶈澆鎿嶄綔絎︺備笅闈㈢殑涓浜涙垚鍛樻槸蹇呴』鐨勶細

緙虹渷鐨勬瀯閫犲嚱鏁幫紙閫氬父涓虹┖錛?br>
鎷瘋礉鏋勯犲嚱鏁?br>
閲嶈澆鐨?#8221;=”榪愮畻絎?br>
浣犲簲璇ラ噸杞藉敖鍙兘澶氱殑榪愮畻絎︽潵婊¤凍鐗瑰畾妯℃澘鐨勯渶瑕侊紝姣斿錛屽鏋滀綘鎯沖畾涔変竴涓被浣滀負 map涓殑閿紙key錛夛紝浣犲繀欏婚噸杞界浉鍏崇殑榪愮畻絎︺備絾鍦ㄨ繖閲屼笉瀵歸噸杞借繍綆楃鍋氳繃澶氳璁轟簡銆?br>
//紼嬪簭錛氭槧灝勮嚜瀹氫箟鐨勭被銆?br>//鐩殑錛氳鏄庡湪map涓庢牱浣跨敤鑷畾涔夌殑綾匯?br>
#include <string>
#include <iostream>
#include <vector>
#include <map>
using namespace std;

class CStudent
{
public :
  int nStudentID;
  int nAge;
public :
  //緙虹渷鏋勯犲嚱鏁扳斺旈氬父涓虹┖
  CStudent()  {  }
  // 瀹屾暣鐨勬瀯閫犲嚱鏁?br>  CStudent(int nSID, int nA)  {  nStudentID=nSID; nAge=nA;  }
  //鎷瘋礉鏋勯犲嚱鏁?br>  CStudent(const CStudent& ob)  
    {  nStudentID=ob.nStudentID; nAge=ob.nAge;  }
  // 閲嶈澆“=”
  void operator = (const CStudent& ob)  
    {  nStudentID=ob.nStudentID; nAge=ob.nAge;  }
};

int main(int argc, char* argv[])
{
  map <string, CStudent> mapStudent;

  mapStudent["Joe Lennon"] = CStudent(103547, 22);
  mapStudent["Phil McCartney"] = CStudent(100723, 22);
  mapStudent["Raoul Starr"] = CStudent(107350, 24);
  mapStudent["Gordon Hamilton"] = CStudent(102330, 22);

  // 閫氳繃濮撳悕鏉ヨ闂瓹student綾諱腑鐨勬垚鍛?br>  cout << "The Student number for Joe Lennon is " <<
    (mapStudent["Joe Lennon"].nStudentID) << endl;

  return 0;
}



TYPEDEF

濡傛灉浣犲枩嬈嬌鐢╰ypedef鍏抽敭瀛楋紝涓嬮潰鏄釜渚嬪瓙錛?br>typedef set <int> SET_INT;
typedef SET_INT::iterator SET_INT_ITER


緙栧啓浠g爜鐨勪竴涓範鎯氨鏄嬌鐢ㄥぇ鍐欏瓧姣嶅拰涓嬪垝綰挎潵鍛藉悕鏁版嵁綾誨瀷銆?br>
ANSI / ISO瀛楃涓?br>
ANSI/ISO瀛楃涓插湪STL瀹瑰櫒涓嬌鐢ㄥ緱寰堟櫘閬嶃傝繖鏄爣鍑嗙殑瀛楃涓茬被錛屽茍寰楀埌浜嗗箍娉涘湴鎻愬★紝鐒惰屽湪緙轟箯鏍煎紡澹版槑鐨勬儏鍐典笅灝變細鍑洪棶棰樸備綘蹇呴』浣跨敤“<<”鍜岃緭鍏ヨ緭鍑烘祦錛坕ostream錛変唬鐮侊紙濡俤ec, width絳夛級灝嗗瓧絎︿覆涓茶仈璧鋒潵銆?br>鍙湪蹇呰鐨勬椂鍊欎嬌鐢╟_str()鏉ラ噸鏂拌幏寰楀瓧絎︽寚閽堛?br>        
                
                                STL瀹炶返鎸囧崡錛堜笅錛?br>STL瀹炶返鎸囧崡  Practical Guide to STL
浣滆咃細Jeff Bogan
緲昏瘧錛氬懆緲?br>

錛堟帴涓瘒錛?br>
娓告爣錛圛terator錛?br>
鎴戣榪囨父鏍囨槸鎸囬拡錛屼絾涓嶄粎浠呮槸鎸囬拡銆傛父鏍囧拰鎸囬拡寰堝儚錛屽姛鑳藉緢鍍忔寚閽堬紝浣嗘槸瀹為檯涓婏紝娓告爣鏄氳繃閲嶈澆涓鍏冪殑”*”鍜?#8221;->”鏉ヤ粠瀹瑰櫒涓棿鎺ュ湴榪斿洖涓涓箋傚皢榪欎簺鍊煎瓨鍌ㄥ湪瀹瑰櫒涓茍涓嶆槸涓涓ソ涓繪剰錛屽洜涓烘瘡褰撲竴涓柊鍊兼坊鍔犲埌瀹瑰櫒涓垨鑰呮湁涓涓間粠瀹瑰櫒涓垹闄わ紝榪欎簺鍊煎氨浼氬け鏁堛傚湪鏌愮紼嬪害涓婏紝娓告爣鍙互鐪嬩綔鏄彞鏌勶紙handle錛夈傞氬父鎯呭喌涓嬫父鏍囷紙iterator錛夌殑綾誨瀷鍙互鏈夋墍鍙樺寲錛岃繖鏍峰鍣ㄤ篃浼氭湁鍑犵涓嶅悓鏂瑰紡鐨勮漿鍙橈細
iterator鈥斺斿浜庨櫎浜唙ector浠ュ鐨勫叾浠栦換浣曞鍣紝浣犲彲浠ラ氳繃榪欑娓告爣鍦ㄤ竴嬈℃搷浣滀腑鍦ㄥ鍣ㄤ腑鏈濆悜鍓嶇殑鏂瑰悜璧頒竴姝ャ傝繖鎰忓懗鐫瀵逛簬榪欑娓告爣浣犲彧鑳戒嬌鐢?#8220;++”鎿嶄綔絎︺傝屼笉鑳戒嬌鐢?#8220;--”鎴?#8220;+=”鎿嶄綔絎︺傝屽浜巚ector榪欎竴縐嶅鍣紝浣犲彲浠ヤ嬌鐢?#8220;+=”銆?#8220;鈥?#8221;銆?#8220;++”銆?#8220;-=”涓殑浠諱綍涓縐嶆搷浣滅鍜?#8220;<”銆?#8220;<=”銆?#8220;>”銆?#8220;>=”銆?#8220;==”銆?#8220;!=”絳夋瘮杈冭繍綆楃銆?br>reverse_iterator 鈥斺斿鏋滀綘鎯崇敤鍚戝悗鐨勬柟鍚戣屼笉鏄悜鍓嶇殑鏂瑰悜鐨勬父鏍囨潵閬嶅巻闄ector涔嬪鐨勫鍣ㄤ腑鐨勫厓绱狅紝浣犲彲浠ヤ嬌鐢╮everse_iterator 鏉ュ弽杞亶鍘嗙殑鏂瑰悜錛屼綘榪樺彲浠ョ敤rbegin()鏉ヤ唬鏇縝egin()錛岀敤rend()浠f浛end()錛岃屾鏃剁殑“++”鎿嶄綔絎︿細鏈濆悜鍚庣殑鏂瑰悜閬嶅巻銆?
const_iterator 鈥斺斾竴涓悜鍓嶆柟鍚戠殑娓告爣錛屽畠榪斿洖涓涓父鏁板箋備綘鍙互浣跨敤榪欑綾誨瀷鐨勬父鏍囨潵鎸囧悜涓涓彧璇葷殑鍊箋?br>const_reverse_iterator 鈥斺斾竴涓湞鍙嶆柟鍚戦亶鍘嗙殑娓告爣錛屽畠榪斿洖涓涓父鏁板箋?br>
Set鍜孧ap涓殑鎺掑簭

闄や簡綾誨瀷鍜屽煎錛屾ā鏉垮惈鏈夊叾浠栫殑鍙傛暟銆備綘鍙互浼犻掍竴涓洖璋冨嚱鏁幫紙閫氬父鎵璇寸殑澹版槑“predicate”鈥斺旇繖鏄甫鏈変竴涓弬鏁扮殑鍑芥暟榪斿洖涓涓竷灝斿鹼級銆備緥濡傦紝濡傛灉浣犳兂鑷姩寤虹珛涓涓泦鍚堬紝闆嗗悎涓殑鍏冪礌鎸夊崌搴忔帓鍒楋紝浣犲彲浠ョ敤綆鏄庣殑鏂規硶寤虹珛涓涓猻et綾伙細

set <int, greater<int> > set1

greater 鏄彟涓涓ā鏉垮嚱鏁幫紙鑼冨瀷鍑芥暟錛夛紝褰撳兼斁緗湪瀹瑰櫒涓悗錛屽畠鐢ㄦ潵涓鴻繖浜涘兼帓搴忋傚鏋滀綘鎯蟲寜闄嶅簭鎺掑垪榪欎簺鍊鹼紝浣犲彲浠ヨ繖鏍峰啓錛?br>
set <int, less<int> > set1

鍦ㄥ疄鐜扮畻娉曟椂錛屽皢澹版槑錛坧redicate錛変綔涓轟竴涓弬鏁頒紶閫掑埌涓涓猄TL妯℃澘綾諱腑鏃朵細閬囧埌寰堝鐨勫叾浠栨儏鍐碉紝涓嬮潰灝嗕細瀵硅繖浜涙儏鍐佃繘琛岃緇嗘弿榪般?br>
STL 鐨勭儲鎭間箣浜屸斺旈敊璇俊鎭?br>
榪欎簺妯℃澘鐨勫懡鍚嶉渶瑕佸緙栬瘧鍣ㄨ繘琛屾墿鍏咃紝鎵浠ュ綋緙栬瘧鍣ㄥ洜鏌愮鍘熷洜鍙戠敓鏁呴殰鏃訛紝瀹冧細鍒楀嚭涓孌靛緢闀跨殑閿欒淇℃伅錛屽茍涓旇繖浜涢敊璇俊鎭櫐娑╅毦鎳傘傛垜瑙夊緱澶勭悊榪欐牱鐨勯毦棰樻病鏈変粈涔堝ソ鍔炴硶銆備絾鏈濂界殑鏂規硶鏄幓鏌ユ壘騫朵粩緇嗙爺絀墮敊璇俊鎭寚鏄庝唬鐮佹鐨勫熬绔傝繕鏈変竴涓儲鎭煎氨鏄細褰撲綘鍙屽嚮閿欒淇℃伅鏃訛紝瀹冧細灝嗛敊璇寚鍚戞ā鐗堝簱鐨勫唴閮ㄤ唬鐮侊紝鑰岃繖浜涗唬鐮佸氨鏇撮毦璇諱簡銆備竴鑸儏鍐典笅錛岀籂閿欑殑鏈濂芥柟娉曟槸閲嶆柊媯鏌ヤ竴涓嬩綘鐨勪唬鐮侊紝榪愯鏃跺拷鐣ユ墍鏈夌殑璀﹀憡淇℃伅銆?br>
綆楁硶錛圓lgorithms錛?br>
綆楁硶鏄ā鏉夸腑浣跨敤鐨勫嚱鏁般傝繖鎵嶇湡姝e紑濮嬩綋鐜癝TL鐨勫己澶т箣澶勩備綘鍙互瀛︿範涓浜涘ぇ澶氭暟妯℃澘瀹瑰櫒涓兘浼氱敤鍒扮殑涓浜涚畻娉曞嚱鏁幫紝榪欐牱浣犲彲浠ラ氳繃鏈綆渚跨殑鏂瑰紡榪涜鎺掑簭銆佹煡鎵俱佷氦鎹㈢瓑鎿嶄綔銆係TL涓寘鍚潃涓緋誨垪瀹炵幇綆楁硶鐨勫嚱鏁般傛瘮濡傦細sort(vec.begin()+1, vec.end()-1)鍙互瀹炵幇瀵歸櫎絎竴涓拰鏈鍚庝竴涓厓绱犵殑鍏朵粬鍏冪礌鐨勬帓搴忔搷浣溿?br>瀹瑰櫒鑷韓涓嶈兘浣跨敤綆楁硶錛屼絾涓や釜瀹瑰櫒涓殑娓告爣鍙互闄愬畾瀹瑰櫒涓嬌鐢ㄧ畻娉曠殑鍏冪礌銆傛棦鐒惰繖鏍鳳紝綆楁硶涓嶇洿鎺ュ彈鍒板鍣ㄧ殑闄愬埗錛岃屾槸閫氳繃閲囩敤娓告爣錛岀畻娉曟墠鑳藉寰楀埌鏀寔銆傛澶栵紝寰堝嬈′綘浼氶亣鍒頒紶閫掍竴涓凡緇忓噯澶囧ソ浜嗙殑鍑芥暟錛堜互鍓嶆彁鍒扮殑澹版槑錛歱redicate錛変綔涓哄弬鏁幫紝浣犱篃鍙互浼犻掍互鍓嶇殑鏃у箋?br>涓嬮潰鐨勪緥瀛愭紨紺轟簡鎬庢牱浣跨敤綆楁硶錛?br>
//紼嬪簭錛氭祴璇曞垎鏁扮粺璁?br>//鐩殑錛氶氳繃瀵瑰悜閲忎腑淇濆瓨鐨勫垎鏁扮殑鎿嶄綔璇存槑鎬庢牱浣跨敤綆楁硶

#include <algorithm>  //濡傛灉瑕佷嬌鐢ㄧ畻娉曞嚱鏁幫紝浣犲繀欏昏鍖呭惈榪欎釜澶存枃浠躲?br>#include <numeric>  // 鍖呭惈accumulate錛堟眰鍜岋級鍑芥暟鐨勫ご鏂囦歡
#include <vector>
#include <iostream>
using namespace std;

int testscore[] = {67, 56, 24, 78, 99, 87, 56};

//鍒ゆ柇涓涓垚緇╂槸鍚﹂氳繃浜嗚冭瘯
bool passed_test(int n)
{
  return (n >= 60);
}

// 鍒ゆ柇涓涓垚緇╂槸鍚︿笉鍙婃牸
bool failed_test(int n)
{
  return (n < 60);
}

int main(int argc, char* argv[])
{
  int total;
  // 鍒濆鍖栧悜閲忥紝浣夸箣鑳藉瑁呭叆testscore鏁扮粍涓殑鍏冪礌
  vector <int> vecTestScore(testscore,
     testscore + sizeof(testscore) / sizeof(int));
  vector <int>::iterator vi;

  // 鎺掑簭騫舵樉紺哄悜閲忎腑鐨勬暟鎹?br>  sort(vecTestScore.begin(), vecTestScore.end());
  cout << "Sorted Test Scores:" << endl;
  for (vi=vecTestScore.begin(); vi != vecTestScore.end(); vi++)
  {  cout << *vi << ", ";  }
  cout << endl;

  // 鏄劇ず緇熻淇℃伅

  // min_element 榪斿洖涓涓?_iterator_ 綾誨瀷鐨勫璞★紝璇ュ璞℃寚鍚戝兼渶灝忕殑閭d釜鍏冪礌銆?br>  //“*”榪愮畻絎︽彁鍙栧厓绱犱腑鐨勫箋?br>  vi = min_element(vecTestScore.begin(), vecTestScore.end());
  cout << "The lowest score was " << *vi << "." << endl;

  //涓巑in_element綾諱技錛宮ax_element鏄夊嚭鏈澶у箋?br>  vi = max_element(vecTestScore.begin(), vecTestScore.end());
  cout << "The highest score was " << *vi << "." << endl;

  // 浣跨敤澹版槑鍑芥暟錛坧redicate function錛屾寚vecTestScore.begin()鍜寁ecTestScore.end()錛夋潵紜畾閫氳繃鑰冭瘯鐨勪漢鏁般?br>  cout << count_if(vecTestScore.begin(), vecTestScore.end(), passed_test) <<
    " out of " << vecTestScore.size() <<
    " students passed the test" << endl;

  // 紜畾鏈夊灝戜漢鑰冭瘯鎸備簡
  cout << count_if(vecTestScore.begin(),
    vecTestScore.end(), failed_test) <<
    " out of " << vecTestScore.size() <<
    " students failed the test" << endl;

  //璁$畻鎴愮嘩鎬誨拰
  total = accumulate(vecTestScore.begin(),
     vecTestScore.end(), 0);
  // 璁$畻鏄劇ず騫沖潎鎴愮嘩
  cout << "Average score was " <<
    (total / (int)(vecTestScore.size())) << endl;

  return 0;
}


Allocator錛堝垎閰嶅櫒錛?br>
Allocator鐢ㄥ湪妯℃澘鐨勫垵濮嬪寲闃舵錛屾槸涓哄璞″拰鏁扮粍榪涜鍒嗛厤鍐呭瓨絀洪棿鍜岄噴鏀劇┖闂存搷浣滅殑妯℃澘綾匯傚畠鍦ㄥ悇縐嶆儏鍐典笅鎵紨鐫寰堢縐樼殑瑙掕壊錛屽畠鍏沖績鐨勬槸楂樺眰鍐呭瓨鐨勪紭鍖栵紝鑰屼笖瀵歸粦鐩掓祴璇曟潵璇達紝浣跨敤Allocator鏄渶濂界殑閫夋嫨銆傞氬父錛屾垜浠笉闇瑕佹槑紜寚鏄庡畠錛屽洜涓哄畠浠氬父鏄綔涓轟笉鐢ㄦ坊鍔犵殑緙虹渷鐨勫弬鏁板嚭鐜扮殑銆傚鏋滃湪涓撲笟鐨勬祴璇曞伐浣滀腑鍑虹幇浜咥llocator錛屼綘鏈濂芥悶娓呮瀹冩槸浠涔堛?br>
Embed Templates錛堝祵鍏ュ紡妯$増錛夊拰Derive Templates錛堝熀妯℃澘錛?br>
姣忓綋浣犱嬌鐢ㄤ竴涓櫘閫氱殑綾葷殑鏃跺欙紝浣犱篃鍙互鍦ㄥ叾涓嬌鐢ㄤ竴涓猄TL綾匯傚畠鏄彲浠ヨ宓屽叆鐨勶細

class CParam
{
  string name;
  string unit;
  vector <double> vecData;
};


鎴栬呭皢瀹冧綔涓轟竴涓熀綾伙細

class CParam : public vector <double>
{
  string name;
  string unit;
};


STL妯$増綾諱綔涓哄熀綾繪椂闇瑕佽皚鎱庛傝繖闇瑕佷綘閫傚簲榪欑緙栫▼鏂瑰紡銆?br>
妯$増涓殑妯$増

涓烘瀯寤轟竴涓鏉傜殑鏁版嵁緇撴瀯錛屼綘鍙互灝嗕竴涓ā鏉挎鍏ュ彟涓涓ā鏉夸腑錛堝嵆“妯$増宓屽”錛夈備竴鑸渶濂界殑鏂規硶鏄湪紼嬪簭鍓嶉潰浣跨敤typedef鍏抽敭瀛楁潵瀹氫箟涓涓湪鍙︿竴涓ā鏉夸腑浣跨敤鐨勬ā鐗堢被鍨嬨?br>
// 紼嬪簭錛氬湪鍚戦噺涓祵鍏ュ悜閲忕殑婕旂ず銆?br>//鐩殑錛氳鏄庢庢牱浣跨敤宓屽鐨凷TL瀹瑰櫒銆?br>
#include <iostream>
#include <vector>

using namespace std;

typedef vector <int> VEC_INT;

int inp[2][2] = {{1, 1}, {2, 0}};  
  // 瑕佹斁鍏ユā鏉夸腑鐨?x2鐨勬鍒欐暟緇?br>
int main(int argc, char* argv[])
{
  int i, j;
  vector <VEC_INT> vecvec;
  // 濡傛灉浣犳兂鐢ㄤ竴鍙ヨ瘽瀹炵幇榪欐牱鐨勫祵濂楋紝浣犲彲浠ヨ繖鏍峰啓錛?br>  // vector <vector <int> > vecvec;
  
  // 灝嗘暟緇勫~鍏ュ悜閲?br>  VEC_INT v0(inp[0], inp[0]+2);  
    // 浼犻掍袱涓寚閽?br>    // 灝嗘暟緇勪腑鐨勫兼嫹璐濆埌鍚戦噺涓?br>  VEC_INT v1(inp[1], inp[1]+2);

  vecvec.push_back(v0);
  vecvec.push_back(v1);

  for (i=0; i<2; i++)
  {
    for (j=0; j<2; j++)
    {
      cout << vecvec[i][j] << "  ";
    }
    cout << endl;
  }
  return 0;
}

// 杈撳嚭錛?br>// 1 1
// 2 0


铏界劧鍦ㄥ垵濮嬪寲鏃跺緢楹葷儲錛屼竴鏃︿綘灝嗘暟鎹~濡傚悜閲忎腑錛屼綘灝卞疄鐜頒簡涓涓彉闀跨殑鍙墿鍏呯殑浜岀淮鏁扮粍錛堝ぇ灝忓彲鎵╁厖鐩村埌浣跨敤瀹屽唴瀛橈級銆傛牴鎹疄闄呴渶瑕侊紝鍙互浣跨敤鍚勭瀹瑰櫒鐨勫祵濂楃粍鍚堛?br>
鎬葷粨

STL鏄湁鐢ㄧ殑錛屼絾鏄嬌鐢ㄨ繃紼嬩腑鐨勫洶闅懼拰楹葷儲鏄啀鎵闅懼厤鐨勩傚氨鍍忎腑鍥戒漢鎵璇寸殑錛?#8220;濡傛灉浣犳帉鎻′簡瀹冿紝渚跨姽濡傝檸娣葷考銆?#8221;


鐢變簬CSDN鐨勬枃绔犵紪杈戝櫒鍙兘灝?<"鍜?>"涔嬮棿鐨勯儴鍒嗕綔涓篽tml鏍囩榪囨護鎺変簡錛岀幇璐村嚭姝g‘鐨?#8220;嫻嬭瘯鍒嗘暟緇熻”紼嬪簭濡備笅錛?

//紼嬪簭錛氭祴璇曞垎鏁扮粺璁?
//鐩殑錛氶氳繃瀵瑰悜閲忎腑淇濆瓨鐨勫垎鏁扮殑鎿嶄綔璇存槑鎬庢牱浣跨敤綆楁硶

#include <algorithm> //濡傛灉瑕佷嬌鐢ㄧ畻娉曞嚱鏁幫紝浣犲繀欏昏鍖呭惈榪欎釜澶存枃浠躲?
#include <numeric> // 鍖呭惈accumulate錛堟眰鍜岋級鍑芥暟鐨勫ご鏂囦歡
#include <vector>
#include <iostream>
using namespace std;

int testscore[] = {67, 56, 24, 78, 99, 87, 56};

//鍒ゆ柇涓涓垚緇╂槸鍚﹂氳繃浜嗚冭瘯
bool passed_test(int n)
{
return (n >= 60);
}

// 鍒ゆ柇涓涓垚緇╂槸鍚︿笉鍙婃牸
bool failed_test(int n)
{
return (n < 60);
}

int main(int argc, char* argv[])
{
int total;
// 鍒濆鍖栧悜閲忥紝浣夸箣鑳藉瑁呭叆testscore鏁扮粍涓殑鍏冪礌
vector <int> vecTestScore(testscore,
testscore + sizeof(testscore) / sizeof(int));
vector <int>::iterator vi;

// 鎺掑簭騫舵樉紺哄悜閲忎腑鐨勬暟鎹?
sort(vecTestScore.begin(), vecTestScore.end());
cout << "Sorted Test Scores:" << endl;
for (vi=vecTestScore.begin(); vi != vecTestScore.end(); vi++)
{ cout << *vi << ", "; }
cout << endl;

// 鏄劇ず緇熻淇℃伅

// min_element 榪斿洖涓涓?_iterator_ 綾誨瀷鐨勫璞★紝璇ュ璞℃寚鍚戝兼渶灝忕殑閭d釜鍏冪礌銆?
//“*”榪愮畻絎︽彁鍙栧厓绱犱腑鐨勫箋?
vi = min_element(vecTestScore.begin(), vecTestScore.end());
cout << "The lowest score was " << *vi << "." << endl;

//涓巑in_element綾諱技錛宮ax_element鏄夊嚭鏈澶у箋?
vi = max_element(vecTestScore.begin(), vecTestScore.end());
cout << "The highest score was " << *vi << "." << endl;

// 浣跨敤澹版槑鍑芥暟錛坧redicate function錛屾寚vecTestScore.begin()鍜寁ecTestScore.end()錛夋潵紜畾閫氳繃鑰冭瘯鐨勪漢鏁般?
cout << count_if(vecTestScore.begin(), vecTestScore.end(), passed_test) <<
" out of " << vecTestScore.size() <<
" students passed the test" << endl;

// 紜畾鏈夊灝戜漢鑰冭瘯鎸備簡
cout << count_if(vecTestScore.begin(),
vecTestScore.end(), failed_test) <<
" out of " << vecTestScore.size() <<
" students failed the test" << endl;

//璁$畻鎴愮嘩鎬誨拰
total = accumulate(vecTestScore.begin(),
vecTestScore.end(), 0);
// 璁$畻鏄劇ず騫沖潎鎴愮嘩
cout << "Average score was " <<
(total / (int)(vecTestScore.size())) << endl;

return 0;
}



]]>
浣跨敤VC6.0瀹炵幇紿楀彛鐨勪換鎰忓垎鍓?/title><link>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22244.html</link><dc:creator>姒曟爲钘?/dc:creator><author>姒曟爲钘?/author><pubDate>Wed, 18 Apr 2007 13:06:00 GMT</pubDate><guid>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22244.html</guid><wfw:comment>http://www.shnenglu.com/xpzhou/comments/22244.html</wfw:comment><comments>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22244.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/xpzhou/comments/commentRss/22244.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xpzhou/services/trackbacks/22244.html</trackback:ping><description><![CDATA[<p><strong>涓銆佸叧浜嶤SplitterWnd綾?/strong><br> 鎴戜滑鍦ㄤ嬌鐢–uteFtp鎴栬匩etAnt絳夊伐鍏風殑鏃跺欙紝涓鑸兘浼氳鍏跺鏉傜殑鐣岄潰鎵鍚稿紩錛屽湪榪欎簺鐣岄潰涓獥鍙h鍒嗗壊涓鴻嫢騫茬殑鍖哄煙錛岀湡姝e仛鍒頒簡紿楀彛鐨勪換鎰忓垎鍓層?閭d箞鎴戜滑鑷繁濡備綍鍒涘緩綾諱技鐨勭晫闈紝涔熷疄鐜扮獥鍙g殑浠繪剰鐨勫垎鍓插憿 錛熷湪VC6.0涓繖灝遍渶瑕佷嬌鐢ㄥ埌CSplitterWnd綾匯侰SplitterWnd鐪嬩笂鍘誨儚鏄竴縐嶇壒孌婄殑妗嗘灦紿楀彛錛屾瘡涓獥鍙i兘琚浉鍚岀殑鎴栬呬笉鍚岀殑瑙嗗浘鎵濉厖銆傚綋紿楀彛琚垏鍒嗗悗鐢ㄦ埛鍙互浣跨敤榧犳爣縐誨姩鍒囧垎鏉℃潵璋冩暣紿楀彛鐨勭浉瀵瑰昂瀵搞傝櫧鐒禫C6.0鏀寔浠嶢ppWizard涓垱寤哄垎鍓茬獥鍙o紝浣嗘槸鑷姩鍔犲叆鐨勫垎鍓叉潯鎬繪槸涓嶈兘璁╂垜浠弧鎰忥紝鍥犳鎴戜滑榪樻槸閫氳繃鎵嬪伐澧炲姞浠g爜鏉ョ啛鎮夎繖涓被銆?<br> CSplitterWnd鐨勬瀯閫犲嚱鏁頒富瑕佸寘鎷笅闈笁涓?<br><font color=#663333>BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,CCreateContext* pContext,DWORD dwStyle,UINT nID);</font> <br>    鍔熻兘鎻忚堪錛氳鍑芥暟鐢ㄦ潵鍒涘緩鍔ㄦ佸垏鍒嗙獥鍙c?br>    鍙傛暟鍚箟錛歱ParentWnd 鍒囧垎紿楀彛鐨勭埗妗嗘灦紿楀彛銆?br>    nMaxRows,nMaxCols鏄垱寤虹殑鏈澶х殑鍒楁暟鍜岃鏁般?<br>    sizeMin鏄獥鏍肩殑鐜板疄澶у皬銆?<br>    pContext 澶у鏁版儏鍐典笅浼犵粰鐖剁獥鍙c?<br>    nID鏄瓧紿楀彛鐨処D鍙? <br>  <font color=#663333>BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nCols,DWORD dwStyle,UINT nID) </font><br>  鍔熻兘鎻忚堪錛氱敤鏉ュ垱寤哄垏鍒嗙獥鍙c?<br>  鍙傛暟鍚箟鍚屼笂銆?<br><font color=#663333>BOOL CreateView (int row,int col,CruntimeClass* pViewClass,SIZE sizeinit,CcreateContext* pContext);</font> <br>  鍔熻兘鎻忚堪錛氫負闈欐佸垏鍒嗙殑紿楀彛鐨勭綉鏍煎~鍏呰鍥俱傚湪灝嗚鍥句簬鍒囧垎紿楀彛鑱旂郴鍦ㄤ竴璧風殑鏃跺欏繀 欏誨厛灝嗗垏鍒嗙獥鍙e垱寤哄ソ銆?<br>  鍙傛暟鍚箟錛氬悓涓娿?br>  浠嶤SplitterWnd婧愮▼搴忓彲浠ョ湅鍑轟笉綆℃槸浣跨敤鍔ㄦ佸垱寤篊reate榪樻槸浣跨敤闈欐佸垱寤篊reateStatic錛屽湪鍑芥暟涓兘璋冪敤浜嗕竴涓繚鎶ゅ嚱鏁癈reateCommon錛屼粠涓嬮潰鐨凜reateCommon鍑芥暟涓殑鍏抽敭浠g爜鍙互鐪嬪嚭鍒涘緩CSplitterWnd鐨勫疄璐ㄦ槸鍒涘緩浜嗕竴緋誨垪鐨凪DI瀛愮獥鍙c?<br>    <font color=#663333>DWORD dwCreateStyle = dwStyle & ~(WS_HSCROLL|WS_VSCROLL);<br>    if (afxData.bWin4) <br>       dwCreateStyle &= ~WS_BORDER; // create with the same wnd-class as MDI-Frame (no erase bkgnd) <br>    if (!CreateEx(0, _afxWndMDIFrame, NULL, dwCreateStyle, 0, 0, 0, 0,pParentWnd->m_hWnd, (HMENU)nID, NULL)) <br>      return FALSE; // create invisible </font><br><br><strong>浜屻佸垱寤哄祵濂楀垎鍓茬獥鍙?/strong> <br><strong>  2.1鍒涘緩鍔ㄦ佸垎鍓茬獥鍙?/strong><br>  鍔ㄦ佸垎鍓茬獥鍙d嬌鐢–reate鏂規硶銆備笅闈㈢殑浠g爜灝嗗垱寤?x2鐨勭獥鏍箋?<br>  <font color=#663333>m_wndSplitter.Create(this,2,2,CSize(100,100),pContext);</font> <br>  浣嗘槸鍔ㄦ佸垱寤虹殑鍒嗗壊紿楀彛鐨勭獥鏍兼暟鐩笉鑳借秴榪?x2錛岃屼笖瀵逛簬鎵鏈夌殑紿楁牸錛岄兘蹇呴』鍏變韓鍚屼竴涓鍥撅紝鎵鍙楃殑闄愬埗涔熸瘮杈冨錛屽洜姝ゆ垜浠笉灝嗗姩鎬佸垱寤轟綔涓洪噸鐐廣傛垜浠殑涓昏綺懼姏鏀懼湪闈欐佸垎鍓茬獥鍙g殑鍒涘緩涓娿?<br>  <strong>2.2鍒涘緩闈欐佸垎鍓茬獥鍙?/strong><br>涓庡姩鎬佸垱寤虹浉姣旓紝闈欐佸垱寤虹殑浠g爜瑕佺畝鍗曡澶氾紝鑰屼笖鍙互鏈澶氬垱寤?6x16鐨勭獥鏍箋備笉鍚岀殑紿楁牸鎴戜滑鍙互浣跨敤CreateView濉厖涓嶅悓鐨勮鍥俱?<br>鍦ㄨ繖閲屾垜浠皢鍒涘緩CuteFtp鐨勭獥鍙e垎鍓層侰uteFtp鐨勫垎鍓叉儏鍐靛涓嬶細</p> <div align=center> <table height=223 cellSpacing=1 cellPadding=0 width=446 bgColor=#666666 border=0> <tbody> <tr bgColor=#eeeeee> <td colSpan=2 height=46> <div align=center><font face="Arial, Helvetica, sans-serif" size=2>CCuteFTPView</font></div> </td> </tr> <tr bgColor=#eeeeee> <td height=123> <div align=center><font face="Arial, Helvetica, sans-serif" size=2>CView2</font></div> </td> <td height=123> <div align=center><font face="Arial, Helvetica, sans-serif" size=2>CView3</font></div> </td> </tr> <tr bgColor=#eeeeee> <td colSpan=2 height=44> <div align=center><font face="Arial, Helvetica, sans-serif" size=2>CView4</font></div> </td> </tr> </tbody> </table> </div> <p>  鍒涘緩姝ラ錛?<br>  鈻?鍦ㄥ垱寤轟箣鍓嶆垜浠繀欏誨厛鐢ˋppWizard鐢熸垚鍗曟枃妗uteFTP錛岀敓鎴愮殑瑙嗙被涓?CCuteFTPView.鍚屾椂鍦ㄥ鍔犱笁涓綾繪垨鑰呬粠瑙嗙被緇ф壙鑰屾潵鐨勬淳鐢熺被CView2,CView3 CView4. <br>  鈻?<strong>澧炲姞鎴愬憳錛?/strong> <br>  鍦–mainfrm.h涓垜浠皢澧炲姞涓嬮潰鐨勪唬鐮侊細 <br>  <font color=#663333>CSplitterWnd wndSplitter1;<br>  CSplitterWnd wndSplitter2;</font><br>  鈻?<strong>閲嶈澆CMainFrame::OnCreateClient()鍑芥暟錛?/strong><br>  <font color=#663333>BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) <br>  { //鍒涘緩涓涓潤鎬佸垎鏍忕獥鍙o紝鍒嗕負涓夎涓鍒?<br>    if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) <br>      return FALSE;<br>    //灝咰CuteFTPView榪炴帴鍒?琛?鍒楃獥鏍間笂<br>    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext); <br>    m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext); //灝咰View4榪炴帴鍒?琛?鍒?br>    if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(1, 0))==NULL) <br>      return FALSE; //灝嗙1琛?鍒楀啀鍒嗗紑1琛?鍒?<br>    //灝咰View2綾昏繛鎺ュ埌絎簩涓垎鏍忓璞$殑0琛?鍒?br>    m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300),pContext); //灝咰View3綾昏繛鎺ュ埌絎簩涓垎鏍忓璞$殑0琛?鍒?br>    m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300),pContext); <br>    return TRUE; <br>  } </font><br><strong>2.3瀹炵幇鍚勪釜鍒嗗壊鍖哄煙鐨勯氫俊</strong> <br>鈻?strong>鏈夋枃妗g浉榪炵殑瑙嗗浘涔嬮棿鐨勯氫俊<br></strong>鐢盇ppWizard鐢熸垚鐨凜CuteFTPView鏄笌鏂囨。鐩歌繛鐨勶紝鍚屾椂鎴戜滑涔熻CView2涓庢枃妗g浉榪烇紝鍥犳鎴戜滑闇瑕佷慨鏀笴CuteFTPApp鐨処nitInstance()鍑芥暟錛屾垜浠皢澧炲姞涓嬮潰鐨勯儴鍒嗐?br><font color=#663333>AddDocTemplate (new CMultiDocTemplate(IDR_VIEW2TYPE, <br>RUNTIME_CLASS(CMainDoc), <br>RUNTIME_CLASS(CMDIChildWnd), <br>RUNTIME_CLASS(CView2))); </font><br>鎴戜滑鐜板湪鏉ュ疄鐜癈CuteFTPView涓嶤View2涔嬮棿鐨勯氫俊銆傜敱浜庤窡鏂囨。綾葷浉榪炵殑瑙嗗浘綾?鏄笉鑳藉畨鍏ㄧ殑涓庨櫎鏂囨。綾諱箣澶栫殑鍏朵綑鐨勮鍥劇被閫氫俊鐨勩傚洜姝ゆ垜浠彧鑳借浠栦滑閮戒笌鏂囨。 綾婚氫俊銆傚湪鏂囨。涓垜浠緗浉搴旂殑鎸囬拡浠ョ敤鏉ヨ幏鐨勫悇涓鍥俱傛垜浠噸杞?CCuteFTPView::OnOpenDocument()鍑芥暟錛?<br><font color=#663333>CCuteFTPView* pCuteFTPView;<br>CView2* pView2;<br>POSITION pos;<br>CView* pView;<br>while(pos!=NULL)<br>{<br>  pView=GetNextView(pos); <br>  if(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) <br>    pCuteFTPView=(CCuteFTPView*)pView; <br>  else(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) <br>    pView2=(CView2*)pView; <br>} </font><br>榪欐牱鎴戜滑鍦ㄦ枃妗g被涓氨鑾風殑浜嗚窡瀹冪浉榪炵殑鎵鏈夌殑瑙嗗浘鐨勬寚閽堛?br>濡傛灉闇瑕佸湪 CCuteFTPView涓皟鐢–View2涓殑涓涓柟娉旸oIt()鍒欎唬鐮佸涓嬶細 <br><font color=#663333>CCuteFTPDoc* pDoc=GetDocument();<br>CView2* pView2=pDoc->pView3;<br>pView3.DoIt(); </font><br>鈻?strong>鏃犳枃妗h鍥句笌鏂囨。鍏寵仈瑙嗗浘涔嬮棿鐨勯氫俊<br></strong>CView3鍜孋View4閮芥槸涓嶄笌鏂囨。鐩稿叧鑱旂殑銆傛垜浠幇鍦ㄥ疄鐜癈View3涓嶤View2鐨勯氫俊.姝e鍓嶉潰鎵璇達紝CView2鍙兘瀹夊叏鐨勪笌CCuteFTPDoc閫氫俊錛屽洜姝わ紝CView3濡傛灉闇瑕佽窡CView2閫氫俊錛屼篃蹇呴』鍊熷姪浜庢枃妗g被銆傚洜姝ょ▼搴忕殑鍏抽敭鏄浣曞湪CView3涓幏寰楁枃妗g殑鎸囬拡銆傝鍥劇被涓病鏈夎繖鏍風殑綾繪垚鍛樺彲浠ョ敤鏉ョ洿鎺ヨ闂枃妗g被銆備絾鏄垜浠煡閬撳湪涓葷獥鍙g被MainFrame涓垜浠彲浠ヨ幏寰楃▼搴忕殑浠繪剰紿楀彛綾葷殑鎸囬拡銆傚洜姝ゆ垜浠彧瑕佽幏寰楃▼搴忎富紿楀彛浜嗙殑鎸囬拡錛屽氨鍙互瑙e喅闂浜嗐備唬鐮佸疄鐜板湪CView3涓闂瓹View2涓殑DoIt()鏂規硶銆?br><br>CView3涓殑浠g爜濡備笅錛?<br><br><font color=#663333>CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); <br>CCuteFTPDoc* Doc=(CCuteFTPDoc*)MainFrame->GetActiveDocument();<br>if(Doc!=NULL) Doc->DoIt(); <br><br>CCuteFTPDoc涓殑鐩稿簲鐨勫鐞嗗嚱鏁癉oIt()浠g爜濡備笅錛?<br><br>CView2* pView2; <br>POSITION pos; <br>CView* pView; <br>while(pos!=NULL) <br>{ <br>  pView=GetNextView(pos);<br>  if(pView->IsKindOf(RUNTIME_CLASS(CView2))==NULL) <br>  pView2=(CView2*)pView; <br>} <br>pView2->DoIt(); </font><br>鈻?strong>鏃犳枃妗e叧鑱旇鍥句箣闂寸殑閫氫俊<br></strong>CView3鍜孋View4閮芥槸涓嶈窡鏂囨。鐩歌繛鐨勶紝濡備綍瀹炵幇浠栦滑涔嬮棿鐨勯氫俊鍛€?姝e鎴戜滑鍦ㄤ笂闈㈡墍璇寸殑閭f牱錛岀敱浜庡湪涓繪鏋朵腑鎴戜滑鍙互璁塊棶浠繪剰鐨勮鍥撅紝鍥犳鎴戜滑鐨勪富瑕佷換 鍔¤繕鏄湪紼嬪簭涓幏寰椾富妗嗘灦鐨勬寚閽堛傚湪CView3涓闂瓹View4涓殑鏂規硶DoIt()銆?<br><font color=#663333>CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); <br>CView4* View4=(CView4*)MainFrame->m_wndSplitter1.GetPane(2,0); <br>View4->DoIt(); </font><br><br>鍒扮幇鍦ㄦ垜浠凡緇忓疄鐜頒簡CuteFTP鐨勪富紿楀彛鐨勬鏋跺茍涓旇兘澶熷疄鐜頒粬浠箣闂寸浉浜掗氫俊鐨勬鏋躲?鍚屾牱鐨勬垜浠彲浠ュ疄鐜板叾浠栫殑涓浜涙祦琛岀晫闈緥濡侼etAnts錛孎oxmail鐨勫垎鍓層?<br><br><strong>涓夈佸叧浜庡璇濇鐨勫垎鍓?/strong> <br>鍒扮洰鍓嶄負姝紝鍙湁鍩轟簬鏂囨。/瑙嗗浘鐨勭▼搴忔墠鑳戒嬌鐢–SplitterWnd錛岃屽熀浜庡璇濇鐨勫簲鐢ㄧ▼搴忓嵈涓嶆敮鎸丆SplitterWnd,浣嗘槸濡傛灉鎴戜滑鍦ㄧ戶鎵跨被涓噸杞戒竴浜涜櫄鎷熸柟娉曪紝涔熻兘浣緾SplitterWnd 鍦ㄥ璇濇紼嬪簭涓嬌鐢ㄣ備粠MFC鐨勬簮紼嬪簭WinSplit.cpp涓彲浠ョ湅鍑猴紝涓轟簡鑾峰緱鐖剁獥鍙g殑鍦版柟紼嬪簭閮借皟鐢ㄤ簡铏氭嫙鏂規硶GetParentFrame(),鍥犳濡傛灉鍦ㄥ璇濇涓嬌鐢紝鎴戜滑蹇呴』灝嗗畠鏀逛負GetParent();鍥犳鎴戜滑灝咰SplitterWnd鐨勪笅闈㈠嚑涓柟娉曢噸杞姐?br>  <font color=#663333>virtual void StartTracking(int ht); <br>  virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL); <br>  virtual void SetActivePane( int row, int col, CWnd* pWnd = NULL ); <br>  virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); <br>  virtual BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult ); <br>  virtual BOOL OnWndMsg( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult ); </font><br>鍏蜂綋瀹炵幇濡備笅錛屽疄鐜頒腑鎴戝皢緇欏嚭鍘熸湁浠g爜鐨勪富瑕侀儴鍒嗕互鍙婁慨鏀瑰悗鐨勪唬鐮佷互浣滃姣斻?br>鍦╟pp鏂囦歡涓姞鍏ヤ笅闈㈢殑鏋氫婦綾誨瀷銆?<br><font color=#663333>enum HitTestValue <br>{ <br>  noHit = 0,//琛ㄧず娌℃湁閫変腑浠諱綍瀵硅薄<br>  vSplitterBox = 1,<br>  hSplitterBox = 2,<br>  bothSplitterBox = 3,<br>  vSplitterBar1 = 101,//浠h〃鍚勪釜鏂瑰悜鐨勬按騫沖垎鍓叉潯<br>  vSplitterBar15 = 115,<br>  hSplitterBar1 = 201,//浠h〃鍨傜洿鏂瑰悜鐨勫悇涓垎鍓叉潯<br>  hSplitterBar15 = 215,<br>  splitterIntersection1 = 301,//浠h〃鍚勪釜浜ゅ弶鐐?br>  splitterIntersection225 = 525<br>};<br><br>CWnd* CxSplitterWnd::GetActivePane(int* pRow, int* pCol)<br>{<br>  ASSERT_VALID(this); <br>  //鑾峰緱褰撳墠鐨勮幏寰楃劍鐐圭殑紿楀彛<br>  //涓嬮潰娉ㄩ噴綺椾綋鐨勬槸鍘熸湁鐨勪唬鐮佺殑涓昏閮ㄥ垎銆?br>  // CWnd* pView = NULL;<br>  //CFrameWnd* pFrameWnd = GetParentFrame();<br>  //ASSERT_VALID(pFrameWnd);<br>  //pView = pFrameWnd->GetActiveView();<br>  //if (pView == NULL)<br>  // pView = GetFocus();<br>  CWnd* pView = GetFocus();<br>  if (pView != NULL && !IsChildPane(pView, pRow, pCol))<br>    pView = NULL;<br>  return pView; <br>} <br><br>void CxSplitterWnd::SetActivePane( int row, int col, CWnd* pWnd) <br>{<br>  CWnd* pPane = pWnd == NULL ? GetPane(row, col) : pWnd; <br>  //涓嬮潰鍔犳敞閲婄矖浣撶殑鏄師鏈変唬鐮佺殑涓昏閮ㄥ垎銆?br>  //FrameWnd* pFrameWnd = GetParentFrame();<br>  //ASSERT_VALID(pFrameWnd); <br>  //pFrameWnd->SetActiveView((CView*)pPane); <br>  pPane->SetFocus();//淇敼鍚庣殑璇彞 <br>}<br><br>void CxSplitterWnd::StartTracking(int ht)<br>{<br>  ASSERT_VALID(this); <br>  if (ht == noHit) <br>    return;<br>  // GetHitRect will restrict 'm_rectLimit' as appropriate <br>  GetInsideRect(m_rectLimit);<br>  if (ht >= splitterIntersection1 && ht <= splitterIntersection225) <br>  { <br>    // split two directions (two tracking rectangles) <br>    int row = (ht - splitterIntersection1) / 15; <br>    int col = (ht - splitterIntersection1) % 15; <br>    GetHitRect(row + vSplitterBar1, m_rectTracker); <br>    int yTrackOffset = m_ptTrackOffset.y; <br>    m_bTracking2 = TRUE; <br>    GetHitRect(col + hSplitterBar1, m_rectTracker2); <br>    m_ptTrackOffset.y = yTrackOffset; <br>  } <br>  else if (ht == bothSplitterBox) <br>  { <br>  // hit on splitter boxes (for keyboard) <br>  GetHitRect(vSplitterBox, m_rectTracker); <br>  int yTrackOffset = m_ptTrackOffset.y; <br>  m_bTracking2 = TRUE; <br>  GetHitRect(hSplitterBox, m_rectTracker2); <br>  m_ptTrackOffset.y = yTrackOffset; // center it <br>  m_rectTracker.OffsetRect(0, m_rectLimit.Height()/2); m_rectTracker2.OffsetRect(m_rectLimit.Width()/2, 0); <br>  } <br>  else<br>  { <br>  // only hit one bar <br>  GetHitRect(ht, m_rectTracker); <br>  } <br><br>//涓嬮潰鍔犳敞閲婄殑灝嗕粠紼嬪簭涓垹鍘匯?<br>//CView* pView = (CView*)GetActivePane(); <br>//if (pView != NULL && pView->IsKindOf(RUNTIME_CLASS(CView))) <br>//{ <br>// ASSERT_VALID(pView); <br>// CFrameWnd* pFrameWnd = GetParentFrame(); <br>//ASSERT_VALID(pFrameWnd); <br>//pView->OnActivateFrame(WA_INACTIVE, pFrameWnd); <br>// } <br>// steal focus and capture<br>  SetCapture();<br>  SetFocus();<br>  // make sure no updates are pending <br>  RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_UPDATENOW); <br>  // set tracking state and appropriate cursor<br>  m_bTracking = TRUE;<br>  OnInvertTracker(m_rectTracker); <br>  if (m_bTracking2) <br>    OnInvertTracker(m_rectTracker2); <br>  m_htTrack = ht; <br>  SetSplitCursor(ht); <br>  }<br><br>BOOL CxSplitterWnd::OnCommand(WPARAM wParam, LPARAM lParam) <br>{ <br>  if (CWnd::OnCommand(wParam, lParam)) <br>    return TRUE; <br>  //涓嬮潰綺椾綋鐨勬槸鍘熺▼搴忕殑璇彞 <br>//<strong>return GetParentFrame()->SendMessage(WM_COMMAND, wParam, lParam); </strong><br>  return GetParent()->SendMessage(WM_COMMAND, wParam, lParam); <br>}<br>BOOL CxSplitterWnd::OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult )<br>{<br>  if (CWnd::OnNotify(wParam, lParam, pResult)) <br>    return TRUE; <br>  //涓嬮潰綺椾綋鐨勬槸婧愮▼搴忕殑璇彞<br>  //<strong>*pResult = GetParentFrame()->SendMessage(WM_NOTIFY, wParam, lParam);</strong><br>  *pResult = GetParent()->SendMessage(WM_NOTIFY, wParam, lParam);<br>  return TRUE;<br>} <br><br>BOOL CxSplitterWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult) <br>{ <br>  // The code line below is necessary if using CxSplitterWnd in a regular dll <br>  // AFX_MANAGE_STATE(AfxGetStaticModuleState());<br>  return CWnd::OnWndMsg(message, wParam, lParam, pResult); <br>} </font><br>榪欐牱鎴戜滑灝卞彲浠ュ湪瀵硅瘽妗嗕腑浣跨敤CxSplitterWnd綾諱簡銆?<br><br><strong>鍥涖丆SplitterWnd鐨勬墿灞?/strong> <br>CSplitterWnd鎵╁睍璇濋鏄緢澶氱殑錛屾垜浠彲浠ラ氳繃瀵瑰師鏈夋柟娉曠殑瑕嗙洊鎴栬呭鍔犳柊鐨勬柟娉曟潵鎵╁睍CSplitterWnd銆傛垜浠湪姝や粎涓句袱涓柟闈㈢殑渚嬪瓙銆?<br><strong>4.1閿佸畾鍒囧垎鏉?/strong><br>褰撶敤鎴峰垱寤哄ソ鍒嗗壊紿楀彛鍚庯紝鏈夋椂騫朵笉甯屾湜閫氳繃鎷栧姩鍒囧垎鏉℃潵璋冭妭紿楀彛鐨勫ぇ灝忋傝繖鏃跺氨蹇呴』閿佸畾鍒囧垎鏉°傞攣瀹氬垏鍒嗘潯鐨勬渶綆鍗曠殑鏂規硶鑾繃浜庝笉璁〤SplitterWnd鏉ュ鐞哤M_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR娑堟伅錛岃屾槸灝嗚繖浜涙秷鎭氦緇機Wnd紿楀彛榪涜澶勭悊錛屼粠鑰屽睆钄芥帀榪欎簺娑堟伅銆傛嬁WM_LBUTTONDOWN澶勭悊榪囩▼鏉ヨ銆備慨鏀逛負濡備笅錛?<br><font color=#663333>void CXXSplitterWnd::OnLButtonDown(UINT nFlags,CPoint point) <br>{ <br>  CWnd::OnLButtonDown(nFlags,point);<br>} </font><br>鍏朵綑鐨勫鐞嗘柟娉曠被浼箋?<br><strong>4.2鍒囧垎鏉$殑瀹氬埗</strong> <br>鐢盬indow鑷繁鐢熸垚鐨勫垏鍒嗘潯鎬繪槸鍥哄畾鐨勶紝娌℃湁浠諱綍鐨勫彉鍖栵紝鎴戜滑鍦ㄤ嬌鐢ㄤ竴浜涜蔣浠舵瘮濡侫CDSee鐨勬椂鍊欏嵈鑳藉彂鐜板畠浠殑鍒囧垎鏉″嵈鏄拰鑷姩鐢熸垚鐨勫垏鍒嗘潯涓嶄竴鏍風殑銆傞偅涔堝浣曞畾鍒惰嚜宸辯殑鍒囧垎鏉″憿錛熼氳繃閲嶈澆CSplitterWnd鐨勮櫄鏂規硶OnDrawSplitter鍜孫nInvertTracker鍙互杈懼埌榪欐牱鐨勭洰鐨勩備笅闈㈢殑浠g爜鐢熸垚鐨勬晥鏋滄槸鍒嗗壊紿楀彛鐨勮竟鐣岄鑹蹭負綰㈣壊錛屽垎鍓叉潯鐨勯鑹蹭負緇胯壊.浠g爜濡備笅錛?br><font color=#663333>void CSplitterWndEx::OnDrawSplitter(CDC *pDC, ESplitType nType, const CRect &rectArg)<br>{<br>  if(pDC==NULL) <br>  { <br>  RedrawWindow(rectArg,NULL,RDW_INVALIDATE|RDW_NOCHILDREN);<br>  return;<br>  } <br>  ASSERT_VALID(pDC);<br>  CRect rc=rectArg;<br>  switch(nType) <br>  { <br>  case splitBorder:<br>  //閲嶇敾鍒嗗壊紿楀彛杈圭晫,浣夸箣涓虹孩鑹?<br>    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));<br>    rc.InflateRect(-CX_BORDER,-CY_BORDER); <br>    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0)); <br>    return; <br>  case splitBox:<br>    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));<br>    rc.InflateRect(-CX_BORDER,-CY_BORDER); <br>    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));<br>    rc.InflateRect(-CX_BORDER,-CY_BORDER);<br>    pDC->FillSolidRect(rc,RGB(0,0,0)); <br>    pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));<br>    return; <br>  case splitBar: <br>  //閲嶇敾鍒嗗壊鏉★紝浣夸箣涓虹豢鑹?<br>    pDC->FillSolidRect(rc,RGB(255,255,255));<br>    rc.InflateRect(-5,-5); <br>    pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0)); <br>    return; <br>  default: <br>    ASSERT(FALSE); <br>  } <br>  pDC->FillSolidRect(rc,RGB(0,0,255));<br>} <br>void CSplitterWndEx::OnInvertTracker(CRect &rect) <br>{ <br>  ASSERT_VALID(this);<br>  ASSERT(!rect.IsRectEmpty()); <br>  ASSERT((GetStyle()&WS_CLIPCHILDREN)==0);<br>  CRect rc=rect; <br>  rc.InflateRect(2,2);<br>  CDC* pDC=GetDC(); <br>  CBrush* pBrush=CDC::GetHalftoneBrush();<br>  HBRUSH hOldBrush=NULL;<br>  if(pBrush!=NULL) hOldBrush=(HBRUSH)SelectObject(pDC->m_hDC,pBrush->m_hObject);<br>  pDC->PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),BLACKNESS); <br>  if(hOldBrush!=NULL) <br>  SelectObject(pDC->m_hDC,hOldBrush);<br>  ReleaseDC(pDC); <br>} </font><br>鍚屾牱鎴戜滑鍙緇ф壙CSplitterWnd涓殑鍏朵綑鐨勪竴浜涜櫄鎷熸柟娉曞氨鍙互鐢熸垚鍏鋒湁鑷繁涓х殑鍒嗗壊紿楀彛浜嗐?br></p> <img src ="http://www.shnenglu.com/xpzhou/aggbug/22244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xpzhou/" target="_blank">姒曟爲钘?/a> 2007-04-18 21:06 <a href="http://www.shnenglu.com/xpzhou/archive/2007/04/18/22244.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>pragma鎸囦護綆浠?/title><link>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22193.html</link><dc:creator>姒曟爲钘?/dc:creator><author>姒曟爲钘?/author><pubDate>Wed, 18 Apr 2007 02:24:00 GMT</pubDate><guid>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22193.html</guid><wfw:comment>http://www.shnenglu.com/xpzhou/comments/22193.html</wfw:comment><comments>http://www.shnenglu.com/xpzhou/archive/2007/04/18/22193.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/xpzhou/comments/commentRss/22193.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xpzhou/services/trackbacks/22193.html</trackback:ping><description><![CDATA[鍦ㄧ紪鍐欑▼搴忕殑鏃跺?鎴戜滑緇忓父瑕佺敤鍒?pragma鎸囦護鏉ヨ瀹氱紪璇戝櫒鐨勭姸鎬佹垨鑰呮槸鎸囩ず緙栬瘧鍣ㄥ畬鎴愪竴浜涚壒瀹氱殑鍔ㄤ綔.<br> 涓嬮潰浠嬬粛浜嗕竴涓嬭鎸囦護鐨勪竴浜涘父鐢ㄥ弬鏁?甯屾湜瀵瑰ぇ瀹舵湁鎵甯姪! <p> 涓. message 鍙傛暟銆?br> message<br> 瀹冭兘澶熷湪緙栬瘧淇℃伅杈撳嚭紿楀彛涓緭鍑虹浉搴旂殑淇℃伅錛岃繖瀵逛簬婧愪唬鐮佷俊鎭殑鎺у埗鏄潪甯擱噸瑕佺殑銆?/p> <p> 鍏朵嬌鐢ㄦ柟娉曚負錛?nbsp; #pragma message("娑堟伅鏂囨湰")</p> <p> 褰撶紪璇戝櫒閬囧埌榪欐潯鎸囦護鏃跺氨鍦ㄧ紪璇戣緭鍑虹獥鍙d腑灝嗘秷鎭枃鏈墦鍗板嚭鏉ャ?br> 褰撴垜浠湪紼嬪簭涓畾涔変簡璁稿瀹忔潵鎺у埗婧愪唬鐮佺増鏈殑鏃跺欙紝鎴戜滑鑷繁鏈夊彲鑳介兘浼氬繕璁版湁娌℃湁姝g‘鐨勮緗繖浜涘畯錛屾鏃舵垜浠彲浠ョ敤榪欐潯鎸囦護鍦ㄧ紪璇戠殑鏃跺欏氨榪涜媯鏌ャ傚亣璁炬垜浠笇鏈涘垽鏂嚜宸辨湁娌℃湁鍦ㄦ簮浠g爜鐨勪粈涔堝湴鏂瑰畾涔変簡_X86榪欎釜瀹忓彲浠ョ敤涓嬮潰鐨勬柟娉曪細<br>#ifdef _X86<br>#pragma message("_X86 macro activated!")<br>#endif<br> 褰撴垜浠畾涔変簡_X86榪欎釜瀹忎互鍚庯紝搴旂敤紼嬪簭鍦ㄧ紪璇戞椂灝變細鍦ㄧ紪璇戣緭鍑虹獥鍙i噷鏄劇ず<br> "_X86 macro activated!"<br> 榪欐牱錛屾垜浠氨涓嶄細鍥犱負涓嶈寰楄嚜宸卞畾涔夌殑涓浜涚壒瀹氱殑瀹忚屾姄鑰蟲尃鑵簡銆?/p> <p> 浜? 鍙︿竴涓嬌鐢ㄥ緱姣旇緝澶氱殑#pragma鍙傛暟鏄痗ode_seg銆?br> 鏍煎紡濡傦細<br> #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )<br> 璇ユ寚浠ょ敤鏉ユ寚瀹氬嚱鏁板湪.obj鏂囦歡涓瓨鏀劇殑鑺?瑙傚療OBJ鏂囦歡鍙互浣跨敤VC鑷甫鐨刣umpbin鍛戒護琛岀▼搴?鍑芥暟鍦?obj鏂囦歡涓粯璁ょ殑瀛樻斁鑺備負.text鑺傦紝濡傛灉code_seg娌℃湁甯﹀弬鏁扮殑璇?鍒欏嚱鏁板瓨鏀懼湪.text鑺備腑銆?/p> <p> push (鍙夊弬鏁? 灝嗕竴涓褰曟斁鍒板唴閮ㄧ紪璇戝櫒鐨勫爢鏍堜腑,鍙夊弬鏁板彲浠ヤ負涓涓爣璇嗙鎴栬呰妭鍚?br> pop(鍙夊弬鏁? 灝嗕竴涓褰曚粠鍫嗘爤欏剁寮瑰嚭,璇ヨ褰曞彲浠ヤ負涓涓爣璇嗙鎴栬呰妭鍚?br> identifier (鍙夊弬鏁? 褰撲嬌鐢╬ush鎸囦護鏃?涓哄帇鍏ュ爢鏍堢殑璁板綍鎸囨淳鐨勪竴涓爣璇嗙,褰撹鏍囪瘑絎﹁鍒犻櫎鐨勬椂鍊欏拰鍏剁浉鍏崇殑鍫嗘爤涓殑璁板綍灝嗚寮瑰嚭鍫嗘爤<br>   "segment-name" (鍙夊弬鏁? 琛ㄧず鍑芥暟瀛樻斁鐨勮妭鍚?br> 渚嬪:<br> //榛樿鎯呭喌涓?鍑芥暟琚瓨鏀懼湪.text鑺備腑<br> void func1() {   // stored in .text<br> }</p> <p> //灝嗗嚱鏁板瓨鏀懼湪.my_data1鑺備腑<br> #pragma code_seg(".my_data1")<br> void func2() {   // stored in my_data1<br> }</p> <p> //r1涓烘爣璇嗙,灝嗗嚱鏁版斁鍏?my_data2鑺備腑<br> #pragma code_seg(push, r1, ".my_data2")<br> void func3() {   // stored in my_data2<br> }</p> <p> int main() {<br> }</p> <p> 涓? #pragma once (姣旇緝甯哥敤錛?br> 榪欐槸涓涓瘮杈冨父鐢ㄧ殑鎸囦護,鍙鍦ㄥご鏂囦歡鐨勬渶寮濮嬪姞鍏ヨ繖鏉℃寚浠ゅ氨鑳藉淇濊瘉澶存枃浠惰緙栬瘧涓嬈?/p> <p> 鍥? #pragma hdrstop琛ㄧず棰勭紪璇戝ご鏂囦歡鍒版涓烘錛屽悗闈㈢殑澶存枃浠朵笉榪涜棰勭紪璇戙?br> BCB鍙互棰勭紪璇戝ご鏂囦歡浠ュ姞蹇摼鎺ョ殑閫熷害錛屼絾濡傛灉鎵鏈夊ご鏂囦歡閮借繘琛岄緙栬瘧鍙堝彲鑳藉崰澶紓佺洏絀洪棿錛屾墍浠ヤ嬌鐢ㄨ繖涓夐」鎺掗櫎涓浜涘ご鏂囦歡銆?br> 鏈夋椂鍗曞厓涔嬮棿鏈変緷璧栧叧緋伙紝姣斿鍗曞厓A渚濊禆鍗曞厓B錛屾墍浠ュ崟鍏傿瑕佸厛浜庡崟鍏傾緙栬瘧銆備綘鍙互鐢?pragma startup鎸囧畾緙栬瘧浼樺厛綰э紝濡傛灉浣跨敤浜?pragma package(smart_init) 錛孊CB灝變細鏍規嵁浼樺厛綰х殑澶у皬鍏堝悗緙栬瘧銆?/p> <p> 浜? #pragma warning鎸囦護<br> 璇ユ寚浠ゅ厑璁告湁閫夋嫨鎬х殑淇敼緙栬瘧鍣ㄧ殑璀﹀憡娑堟伅鐨勮涓?br> 鎸囦護鏍煎紡濡備笅:<br> #pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]<br> #pragma warning( push[ ,n ] )<br> #pragma warning( pop )</p> <p> 涓昏鐢ㄥ埌鐨勮鍛婅〃紺烘湁濡備笅鍑犱釜:</p> <p> once:鍙樉紺轟竴嬈?璀﹀憡/閿欒絳?娑堟伅<br> default:閲嶇疆緙栬瘧鍣ㄧ殑璀﹀憡琛屼負鍒伴粯璁ょ姸鎬?br> 1,2,3,4:鍥涗釜璀﹀憡綰у埆<br> disable:紱佹鎸囧畾鐨勮鍛婁俊鎭?br> error:灝嗘寚瀹氱殑璀﹀憡淇℃伅浣滀負閿欒鎶ュ憡</p> <p> 濡傛灉澶у瀵逛笂闈㈢殑瑙i噴涓嶆槸寰堢悊瑙?鍙互鍙傝冧竴涓嬩笅闈㈢殑渚嬪瓙鍙婅鏄?/p> <p> #pragma warning( disable : 4507 34; once : 4385; error : 164 )<br> 絳変環浜庯細<br> #pragma warning(disable:4507 34)  // 涓嶆樉紺?507鍜?4鍙瘋鍛婁俊鎭?br> #pragma warning(once:4385)   // 4385鍙瘋鍛婁俊鎭粎鎶ュ憡涓嬈?br> #pragma warning(error:164)   // 鎶?64鍙瘋鍛婁俊鎭綔涓轟竴涓敊璇?br> 鍚屾椂榪欎釜pragma warning 涔熸敮鎸佸涓嬫牸寮忥細<br> #pragma warning( push [ ,n ] )<br> #pragma warning( pop )<br> 榪欓噷n浠h〃涓涓鍛婄瓑綰?1---4)銆?br> #pragma warning( push )淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬併?br> #pragma warning( push, n)淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬侊紝騫朵笖鎶婂叏灞璀﹀憡絳夌駭璁懼畾涓簄銆?br> #pragma warning( pop )鍚戞爤涓脊鍑烘渶鍚庝竴涓鍛婁俊鎭紝鍦ㄥ叆鏍堝拰鍑烘爤涔嬮棿鎵浣滅殑涓鍒囨敼鍔ㄥ彇娑堛備緥濡傦細<br> #pragma warning( push )<br> #pragma warning( disable : 4705 )<br> #pragma warning( disable : 4706 )<br> #pragma warning( disable : 4707 )<br> #pragma warning( pop )</p> <p> 鍦ㄨ繖孌典唬鐮佺殑鏈鍚庯紝閲嶆柊淇濆瓨鎵鏈夌殑璀﹀憡淇℃伅(鍖呮嫭4705錛?706鍜?707)</p> <p> 鍦ㄤ嬌鐢ㄦ爣鍑咰++榪涜緙栫▼鐨勬椂鍊欑粡甯鎬細寰楀埌寰堝鐨勮鍛婁俊鎭?鑰岃繖浜涜鍛婁俊鎭兘鏄笉蹇呰鐨勬彁紺?鎵浠ユ垜浠彲浠ヤ嬌鐢?pragma warning(disable:4786)鏉ョ姝㈣綾誨瀷鐨勮鍛婂湪vc涓嬌鐢ˋDO鐨勬椂鍊欎篃浼氬緱鍒頒笉蹇呰鐨勮鍛婁俊鎭?榪欎釜鏃跺欐垜浠彲浠ラ氳繃#pragma warning(disable:4146)鏉ユ秷闄よ綾誨瀷鐨勮鍛婁俊鎭?/p> <p> 鍏? pragma comment(...)<br> 璇ユ寚浠ょ殑鏍煎紡涓猴細  #pragma comment( "comment-type" [, commentstring] )<br> 璇ユ寚浠ゅ皢涓涓敞閲婅褰曟斁鍏ヤ竴涓璞℃枃浠舵垨鍙墽琛屾枃浠朵腑,comment-type(娉ㄩ噴綾誨瀷):鍙互鎸囧畾涓轟簲縐嶉瀹氫箟鐨勬爣璇嗙鐨勫叾涓竴縐嶃?br> 浜旂棰勫畾涔夌殑鏍囪瘑絎︿負:</p> <p> 1銆乧ompiler:灝嗙紪璇戝櫒鐨勭増鏈彿鍜屽悕縐版斁鍏ョ洰鏍囨枃浠朵腑,鏈潯娉ㄩ噴璁板綍灝嗚緙栬瘧鍣ㄥ拷鐣?br>濡傛灉浣犱負璇ヨ褰曠被鍨嬫彁渚涗簡commentstring鍙傛暟,緙栬瘧鍣ㄥ皢浼氫駭鐢熶竴涓鍛?br>渚嬪:#pragma comment( compiler )</p> <p> 2銆乪xestr:灝哻ommentstring鍙傛暟鏀懼叆鐩爣鏂囦歡涓?鍦ㄩ摼鎺ョ殑鏃跺欒繖涓瓧絎︿覆灝嗚鏀懼叆鍒板彲鎵ц鏂囦歡涓?褰撴搷浣滅郴緇熷姞杞藉彲鎵ц鏂囦歡鐨勬椂鍊?璇ュ弬鏁板瓧絎︿覆涓嶄細琚姞杞藉埌鍐呭瓨涓?浣嗘槸,璇ュ瓧絎︿覆鍙互琚玠umpbin涔嬬被鐨勭▼搴忔煡鎵懼嚭騫舵墦鍗板嚭鏉?浣犲彲浠ョ敤榪欎釜鏍囪瘑絎﹀皢鐗堟湰鍙風爜涔嬬被鐨勪俊鎭祵鍏ュ埌鍙墽琛屾枃浠朵腑!</p> <p> 3銆乴ib:榪欐槸涓涓潪甯稿父鐢ㄧ殑鍏抽敭瀛?鐢ㄦ潵灝嗕竴涓簱鏂囦歡閾炬帴鍒扮洰鏍囨枃浠朵腑甯哥敤鐨刲ib鍏抽敭瀛楋紝鍙互甯垜浠繛鍏ヤ竴涓簱鏂囦歡銆?br> 渚嬪: <br> #pragma comment(lib, "user32.lib")<br> 璇ユ寚浠ょ敤鏉ュ皢user32.lib搴撴枃浠跺姞鍏ュ埌鏈伐紼嬩腑</p> <p> 4銆乴inker:灝嗕竴涓摼鎺ラ夐」鏀懼叆鐩爣鏂囦歡涓?浣犲彲浠ヤ嬌鐢ㄨ繖涓寚浠ゆ潵浠f浛鐢卞懡浠よ浼犲叆鐨勬垨鑰呭湪寮鍙戠幆澧冧腑璁劇疆鐨勯摼鎺ラ夐」,浣犲彲浠ユ寚瀹?include閫夐」鏉ュ己鍒跺寘鍚煇涓璞?渚嬪:<br>#pragma comment(linker, "/include:__mySymbol")<br>浣犲彲浠ュ湪紼嬪簭涓緗笅鍒楅摼鎺ラ夐」<br>/DEFAULTLIB<br>/EXPORT<br>/INCLUDE<br>/MERGE<br>/SECTION</p> <p> 榪欎簺閫夐」鍦ㄨ繖閲屽氨涓嶄竴涓璇存槑浜?璇︾粏淇℃伅璇風湅msdn!</p> <p> 5銆乽ser:灝嗕竴鑸殑娉ㄩ噴淇℃伅鏀懼叆鐩爣鏂囦歡涓璫ommentstring鍙傛暟鍖呭惈娉ㄩ噴鐨勬枃鏈俊鎭?榪欎釜娉ㄩ噴璁板綍灝嗚閾炬帴鍣ㄥ拷鐣?br> 渚嬪:<br> #pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ ) </p> <img src ="http://www.shnenglu.com/xpzhou/aggbug/22193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xpzhou/" target="_blank">姒曟爲钘?/a> 2007-04-18 10:24 <a href="http://www.shnenglu.com/xpzhou/archive/2007/04/18/22193.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://ks180.com" target="_blank">美女尤物久久精品</a>| <a href="http://18p2.com" target="_blank">亚洲伊人网站</a>| <a href="http://sdjinchuan.com" target="_blank">蜜臀av性久久久久蜜臀aⅴ</a>| <a href="http://ks180.com" target="_blank">国产一区二区欧美日韩</a>| <a href="http://51jieyanla.com" target="_blank">久久成人免费</a>| <a href="http://emu160.com" target="_blank">久久亚洲欧美</a>| <a href="http://789469.com" target="_blank">99re热这里只有精品视频</a>| <a href="http://fdgkinetic.com" target="_blank">亚洲乱码国产乱码精品精天堂 </a>| <a href="http://am3757.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://khc83.com" target="_blank">久久激情中文</a>| <a href="http://sfrecq.com" target="_blank">一本久久综合亚洲鲁鲁</a>| <a href="http://wwwavtb2049.com" target="_blank">一本色道久久综合狠狠躁的推荐</a>| <a href="http://488918.com" target="_blank">国产精品欧美一区二区三区奶水 </a>| <a href="http://5566kan.com" target="_blank">亚洲精品自在久久</a>| <a href="http://862323.com" target="_blank">亚洲网站在线播放</a>| <a href="http://bjmrkj.com" target="_blank">**欧美日韩vr在线</a>| <a href="http://www8xoy.com" target="_blank">99精品国产热久久91蜜凸</a>| <a href="http://boocnn.com" target="_blank">国产精品久久久久久久久果冻传媒</a>| <a href="http://www930666.com" target="_blank">久久国产主播</a>| <a href="http://jiuzuifusheng.com" target="_blank">久久亚洲欧美</a>| <a href="http://avsemm.com" target="_blank">午夜视频在线观看一区</a>| <a href="http://wwwjuhuase.com" target="_blank">久久久免费精品视频</a>| <a href="http://aimashe.com" target="_blank">在线中文字幕一区</a>| <a href="http://erodasy.com" target="_blank">久久精品在线观看</a>| <a href="http://sclddn.com" target="_blank">亚洲永久免费精品</a>| <a href="http://www-13978.com" target="_blank">久久婷婷人人澡人人喊人人爽</a>| <a href="http://zzchanke.com" target="_blank">日韩午夜电影av</a>| <a href="http://uuuu79.com" target="_blank">久久成人在线</a>| <a href="http://xcao10.com" target="_blank">一区二区三区日韩精品</a>| <a href="http://842332.com" target="_blank">久久黄色网页</a>| <a href="http://sapronlee.com" target="_blank">亚洲视频在线看</a>| <a href="http://www-90422.com" target="_blank">久久免费99精品久久久久久</a>| <a href="http://v63xs.com" target="_blank">一区二区三区欧美日韩</a>| <a href="http://3333577.com" target="_blank">久久久久久久久伊人</a>| <a href="http://www-188445.com" target="_blank">午夜亚洲视频</a>| <a href="http://sz-jyqj.com" target="_blank">欧美三区美女</a>| <a href="http://www201314.com" target="_blank">免费观看日韩</a>| <a href="http://laodaohang.com" target="_blank">国产精品永久免费在线</a>| <a href="http://joy-learn.com" target="_blank">欧美成人资源</a>| <a href="http://actinview.com" target="_blank">国产在线一区二区三区四区</a>| <a href="http://llamkos.com" target="_blank">亚洲精品在线视频</a>| <a href="http://sesese98.com" target="_blank">亚洲激情成人在线</a>| <a href="http://xhamster0.com" target="_blank">欧美在线观看一二区</a>| <a href="http://tigerpowerinc.com" target="_blank">亚洲午夜视频在线观看</a>| <a href="http://chunhuigk.com" target="_blank">欧美 日韩 国产 一区</a>| <a href="http://87ssyy.com" target="_blank">久久成人精品无人区</a>| <a href="http://chukewang.com" target="_blank">欧美日韩一区三区四区</a>| <a href="http://329374.com" target="_blank">亚洲国产精品va在看黑人</a>| <a href="http://eee104.com" target="_blank">国产日韩综合</a>| <a href="http://xpfuli.com" target="_blank">亚洲视频免费看</a>| <a href="http://my1315.com" target="_blank">一本久道久久综合婷婷鲸鱼</a>| <a href="http://687673.com" target="_blank">欧美.www</a>| <a href="http://wanmajc.com" target="_blank">欧美jizzhd精品欧美巨大免费</a>| <a href="http://6666345.com" target="_blank">国产精品亚洲视频</a>| <a href="http://www-77663.com" target="_blank">在线亚洲精品福利网址导航</a>| <a href="http://www-888005.com" target="_blank">亚洲精品日韩久久</a>| <a href="http://621939.com" target="_blank">免费日韩视频</a>| <a href="http://rosi2030.com" target="_blank">欧美电影免费观看高清</a>| <a href="http://dusenborg.com" target="_blank">黄色免费成人</a>| <a href="http://sepapapa8888.com" target="_blank">久久国产福利国产秒拍</a>| <a href="http://www473333.com" target="_blank">欧美在线视频一区</a>| <a href="http://989766.com" target="_blank">国产欧美日本一区二区三区</a>| <a href="http://cuucs.com" target="_blank">亚洲专区在线视频</a>| <a href="http://spardec.com" target="_blank">欧美一级免费视频</a>| <a href="http://diyiao.com" target="_blank">国产美女扒开尿口久久久</a>| <a href="http://318823.com" target="_blank">亚洲自拍电影</a>| <a href="http://833816.com" target="_blank">久久精品伊人</a>| <a href="http://sdmsjd.com" target="_blank">激情综合久久</a>| <a href="http://123-sj.com" target="_blank">久久天堂av综合合色</a>| <a href="http://www456456.com" target="_blank">久久久www成人免费精品</a>| <a href="http://muwendada.com" target="_blank">国内成+人亚洲+欧美+综合在线</a>| <a href="http://chukewang.com" target="_blank">欧美一级免费视频</a>| <a href="http://5657hh.com" target="_blank">六月丁香综合</a>| <a href="http://my88855.com" target="_blank">91久久久在线</a>| <a href="http://wu52vip.com" target="_blank">欧美日韩精品久久久</a>| <a href="http://chunshanketang.com" target="_blank">日韩视频在线观看</a>| <a href="http://anxingou365.com" target="_blank">欧美一级视频一区二区</a>| <a href="http://1116333.com" target="_blank">国产午夜精品久久久久久免费视</a>| <a href="http://2629929.com" target="_blank">欧美一区二区三区在线看</a>| <a href="http://lukushe.com" target="_blank">久久婷婷蜜乳一本欲蜜臀</a>| <a href="http://hlyjh.com" target="_blank">亚洲国产精品成人精品</a>| <a href="http://haose23.com" target="_blank">欧美成人免费va影院高清</a>| <a href="http://78757a.com" target="_blank">亚洲精品日韩在线观看</a>| <a href="http://77777gao.com" target="_blank">亚洲影院在线观看</a>| <a href="http://saobitv.com" target="_blank">国产一区清纯</a>| <a href="http://ewaygou.com" target="_blank">嫩草国产精品入口</a>| <a href="http://6h8c.com" target="_blank">亚洲午夜久久久久久尤物</a>| <a href="http://123lifenet.com" target="_blank">欧美中文字幕久久</a>| <a href="http://7kz6.com" target="_blank">亚洲激情欧美</a>| <a href="http://spvicarb.com" target="_blank">国产精品第2页</a>| <a href="http://ddixx.com" target="_blank">久久人人97超碰国产公开结果</a>| <a href="http://8847m.com" target="_blank">欧美国产精品v</a>| <a href="http://zhongqingshiye.com" target="_blank">一区二区冒白浆视频</a>| <a href="http://clgtzz.com" target="_blank">国产日韩视频</a>| <a href="http://essuee.com" target="_blank">欧美二区乱c少妇</a>| <a href="http://hhhtalk.com" target="_blank">一区二区精品在线</a>| <a href="http://xsjj10.com" target="_blank">久久免费的精品国产v∧</a>| <a href="http://zj-jufeng.com" target="_blank">亚洲免费精品</a>| <a href="http://baidijs.com" target="_blank">国产亚洲精品bt天堂精选</a>| <a href="http://www633998.com" target="_blank">蜜臀va亚洲va欧美va天堂</a>| <a href="http://7357538.com" target="_blank">亚洲性线免费观看视频成熟</a>| <a href="http://9885888.com" target="_blank">久久综合给合</a>| <a href="http://caoliu20.com" target="_blank">亚洲一区二区三区久久</a>| <a href="http://js6996.com" target="_blank">极品av少妇一区二区</a>| <a href="http://guanghezixun.com" target="_blank">欧美国产日本</a>| <a href="http://avtb2120.com" target="_blank">国产日韩欧美在线一区</a>| <a href="http://jx963.com" target="_blank">欧美大片在线看免费观看</a>| <a href="http://qiansemf.com" target="_blank">亚洲一区二区免费在线</a>| <a href="http://zjkgjt.com" target="_blank">免费久久久一本精品久久区</a>| <a href="http://261262.com" target="_blank">亚洲夜间福利</a>| <a href="http://133969.com" target="_blank">亚洲黄色在线看</a>| <a href="http://kk8586.com" target="_blank">国产午夜精品福利</a>| <a href="http://77smsm.com" target="_blank">欧美日韩国产一区二区三区</a>| <a href="http://91nbs.com" target="_blank">久久精品在线播放</a>| <a href="http://jrtkpx.com" target="_blank">亚洲图片自拍偷拍</a>| <a href="http://25axxa.com" target="_blank">91久久久久久</a>| <a href="http://8eya.com" target="_blank">老司机精品导航</a>| <a href="http://www-333304.com" target="_blank">午夜国产精品视频免费体验区</a>| <a href="http://www297777.com" target="_blank">亚洲国产精品专区久久</a>| <a href="http://xprinter3d.com" target="_blank">国产美女诱惑一区二区</a>| <a href="http://sz-changrong.com" target="_blank">欧美伦理91i</a>| <a href="http://filmcameralibrary.com" target="_blank">久久噜噜噜精品国产亚洲综合</a>| <a href="http://hhsj31.com" target="_blank">国产精品99久久久久久久久</a>| <a href="http://www-132377.com" target="_blank">亚洲国产电影</a>| <a href="http://042225.com" target="_blank">欧美.com</a>| <a href="http://05511253.com" target="_blank">久久久综合精品</a>| <a href="http://pinyuanad.com" target="_blank">欧美一区亚洲</a>| <a href="http://52wenxiu.com" target="_blank">亚洲综合电影</a>| <a href="http://kanzhelu31.com" target="_blank">一区二区三区四区蜜桃</a>| <a href="http://www48929.com" target="_blank">亚洲激情视频网</a>| <a href="http://8xyxs1.com" target="_blank">在线看片日韩</a>| <a href="http://2jjzz.com" target="_blank">亚洲第一精品电影</a>| <a href="http://aa56789.com" target="_blank">激情久久中文字幕</a>| <a href="http://www344399.com" target="_blank">国产在线精品一区二区夜色</a>| <a href="http://2015xiaomingkankan.com" target="_blank">国产精品福利av</a>| <a href="http://hakuihoso.com" target="_blank">欧美视频一区二区三区在线观看 </a>| <a href="http://4008305555.com" target="_blank">正在播放亚洲一区</a>| <a href="http://3bmmtv.com" target="_blank">亚洲三级免费</a>| <a href="http://gdvapar.com" target="_blank">亚洲人成网站影音先锋播放</a>| <a href="http://4009935888.com" target="_blank">欧美激情二区三区</a>| <a href="http://994745.com" target="_blank">欧美黑人一区二区三区</a>| <a href="http://sese912.com" target="_blank">欧美国产在线电影</a>| <a href="http://k8m9.com" target="_blank">亚洲黄一区二区</a>| <a href="http://bmcshy.com" target="_blank">亚洲经典三级</a>| <a href="http://lysyfls.com" target="_blank">日韩视频在线观看国产</a>| <a href="http://555346.com" target="_blank">一区二区免费看</a>| <a href="http://qhzyxcd.com" target="_blank">在线视频中文亚洲</a>| <a href="http://xian369.com" target="_blank">亚洲欧美视频在线观看</a>| <a href="http://www068hs.com" target="_blank">亚洲欧美日韩一区在线观看</a>| <a href="http://www308eee.com" target="_blank">亚洲视频导航</a>| <a href="http://83mmmm.com" target="_blank">亚洲综合视频在线</a>| <a href="http://pourporn.com" target="_blank">欧美一区二区三区的</a>| <a href="http://www24822.com" target="_blank">欧美一区二区三区男人的天堂</a>| <a href="http://xvideoxxnx.com" target="_blank">欧美在线地址</a>| <a href="http://julong-ads.com" target="_blank">麻豆91精品</a>| <a href="http://g2000vip.com" target="_blank">欧美精品乱人伦久久久久久</a>| <a href="http://9y1111.com" target="_blank">欧美日本在线一区</a>| <a href="http://by8556.com" target="_blank">国产精品久久久久国产a级</a>| <a href="http://yw3329.com" target="_blank">国产日韩欧美一二三区</a>| <a href="http://junmatek.com" target="_blank">国语自产精品视频在线看一大j8</a>| <a href="http://jzsp121.com" target="_blank">好看不卡的中文字幕</a>| <a href="http://hazymall.com" target="_blank">亚洲成人资源网</a>| <a href="http://01xxtv.com" target="_blank">一本色道久久综合亚洲精品婷婷</a>| <a href="http://my6557.com" target="_blank">亚洲一区bb</a>| <a href="http://aass123.com" target="_blank">久久精品在这里</a>| <a href="http://aqdav037.com" target="_blank">免费日韩精品中文字幕视频在线</a>| <a href="http://xingcheny.com" target="_blank">欧美国产精品日韩</a>| <a href="http://kpd521.com" target="_blank">夜夜嗨av一区二区三区网站四季av</a>| <a href="http://pigkrtv.com" target="_blank">亚洲中无吗在线</a>| <a href="http://305838.com" target="_blank">久久亚洲精选</a>| <a href="http://7776701.com" target="_blank">国产精品久久久久久久久久免费看 </a>| <a href="http://zytxkj.com" target="_blank">欧美精品一区三区在线观看</a>| <a href="http://51120guahao.com" target="_blank">欧美性猛交xxxx乱大交退制版</a>| <a href="http://nebnb89.com" target="_blank">国产精品视频精品视频</a>| <a href="http://by3799.com" target="_blank">精品999网站</a>| <a href="http://www-216678.com" target="_blank">国产农村妇女精品一二区</a>| <a href="http://japanjavbibi.com" target="_blank">亚洲国产乱码最新视频</a>| <a href="http://k37b.com" target="_blank">亚洲蜜桃精久久久久久久</a>| <a href="http://7m08.com" target="_blank">欧美一级大片在线免费观看</a>| <a href="http://xissy.com" target="_blank">久热爱精品视频线路一</a>| <a href="http://jiuzuifusheng.com" target="_blank">欧美日本韩国在线</a>| <a href="http://chunshanketang.com" target="_blank">国产欧美一区二区精品婷婷</a>| <a href="http://my736.com" target="_blank">亚洲国产精品久久久久婷婷老年</a>| <a href="http://6h8c.com" target="_blank">亚洲午夜av在线</a>| <a href="http://zgztby.com" target="_blank">免费成人av</a>| <a href="http://zucai168.com" target="_blank">亚洲综合社区</a>| <a href="http://767296.com" target="_blank">欧美日韩成人综合</a>| <a href="http://www19829.com" target="_blank">精品盗摄一区二区三区</a>| <a href="http://alex-bruni.com" target="_blank">亚洲午夜精品国产</a>| <a href="http://lovehefei.com" target="_blank">免费精品视频</a>| <a href="http://yhc26.com" target="_blank">亚洲免费视频在线观看</a>| <a href="http://778877k.com" target="_blank">欧美激情a∨在线视频播放</a>| <a href="http://777888789.com" target="_blank">国产香蕉久久精品综合网</a>| <a href="http://710477.com" target="_blank">一区二区三区日韩欧美</a>| <a href="http://yimeimc.com" target="_blank">你懂的视频一区二区</a>| <a href="http://mascorcg.com" target="_blank">性高湖久久久久久久久</a>| <a href="http://www-369111.com" target="_blank">欧美视频网站</a>| <a href="http://7v51.com" target="_blank">99riav久久精品riav</a>| <a href="http://mmmm57.com" target="_blank">欧美国产日韩精品免费观看</a>| <a href="http://www55747.com" target="_blank">欧美一级大片在线免费观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>