锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
鏂囩珷鏉ユ簮錛?/font>
http://www.vccode.com/
鏂囩珷浣滆咃細涓嶈
AND_CATCHAND_CATCH
AND_CATCH(exception_class,exception _object_point_name)
璇存槑錛?br />
瀹氫箟涓涓唬鐮佸潡錛屽畠鐢ㄤ簬鑾峰彇搴熼櫎褰撳墠TRY鍧椾腑鐨勯檮鍔犲紓甯哥被鍨嬨備嬌鐢–ATCH瀹忎互鑾峰緱涓涓紓甯哥被鍨嬶紝鐒跺悗浣跨敤AND_CATCH瀹忚幏寰楅殢鍚庣殑寮傚父澶勭悊浠g爜鍙互璁塊棶寮傚父瀵硅薄錛堣嫢鍚堥傜殑璇?宸插緱鍒板叧浜庡紓甯哥殑鐗瑰埆鍘熷洜鐨勬洿澶氭秷鎭傚湪AND_CATCH鍧椾腑璋冪敤THROW_LAST瀹忎互渚挎妸澶勭悊榪囩▼縐誨埌涓嬩釜澶栭儴寮傚父妗嗘灦銆侫ND_CATCH鍙爣璁癈ATCH鎴朅ND_CATCH鍧楃殑鏈熬銆?
娉ㄩ噴錛?
AND_CATCH鍧楄瀹氫箟鎴愪負涓涓狢++浣滅敤鍩燂紙鐢辮姳鎷彿鏉ユ弿榪幫級銆傝嫢鐢ㄦ埛鍦ㄦ浣滅敤鍩熷畾涔夊彉閲忥紝閭d箞璁頒綇浠栦滑鍙湪姝や綔鐢ㄥ煙涓彲浠ヨ闂備粬涔熺敤浜巈xception_object_pointer_name鍙橀噺銆?
聽
ASSERT
ASSERT(booleanExpression)
璇存槑錛?
璁$畻鍙橀噺鐨勫箋傚鏋滅粨鏋勭殑鍊間負0錛岄偅涔堟瀹忎究鎵撳嵃涓涓瘖鏂秷鎭茍涓旀垚璁繍琛屽け璐ャ傚鏋滄潯浠朵負闈?錛岄偅涔堜粈涔堜篃涓嶅仛銆?璇婃柇娑堟伅鐨勫艦寮忎負錛?assertion failed in file in line 鍏朵腑name鏄厓鏂囦歡鍚嶏紝num鏄簮鏂囦歡涓繍琛屽け璐ョ殑涓柇鍙楓?鍦≧elease鐗堜腑錛孉SSERT涓嶈綆楄〃杈懼紡鐨勫間篃灝變笉涓柇紼嬪簭銆傚鏋滃繀欏昏綆楁琛ㄨ揪寮忕殑鍊間笖涓嶇鐜濡備綍閭d箞鐢╒ERIFY浠f浛ASSERT銆?
娉ㄩ噴錛?
ASSERT鍙兘鍦―ebug鐗堜腑鐢?
ASSERT_VAILD
ASSERT_VAILD(pObject)
璇存槑錛?
鐢ㄤ簬媯嫻嬪叧浜庡璞$殑鍐呴儴鐘舵佺殑鏈夋晥鎬с侫SSERT_VALID璋冪敤姝ゅ璞$殑AssertValid鎴愬憳鍑芥暟錛堟妸瀹冧滑浣滀負鑷繁鐨勫彉閲忔潵浼犻掞級銆傚湪Release鐗堜腑ASSERT_VALID浠涔堜篃涓嶅仛銆傚湪DEBUG鐗堜腑錛屼粬媯鏌ユ寚閽堬紝浠ヤ笉鍚屼簬NULL鐨勬柟寮忚繘琛屾鏌ワ紝騫惰皟鐢ㄥ璞¤嚜宸辯殑AssertValid鎴愬憳鍑芥暟銆傚鏋滆繖浜涙嫻嬩腑鏈変換浣曚竴涓け璐ョ殑璇濓紝閭d箞浠栦細浠ヤ笌ASSERT鐩稿悓鐨勬柟娉曟樉紺轟竴涓鍛婄殑娑堟伅銆?
娉ㄩ噴錛?
姝ゅ嚱鏁板彧鍦―EBUG鐗堜腑鏈夋晥銆?
BEGIN_MESSAGE_MAP
BEGIN_MESSAGE_MAP(the class,baseclass)
璇存槑錛?
浣跨敤BEGIN_MESSAGE_MAP寮濮嬬敤鎴鋒秷鎭槧灝勭殑瀹氫箟銆傚湪瀹氫箟鐢ㄦ埛綾誨嚱鏁扮殑宸ュ叿錛?cpp錛夋枃浠朵腑錛屼互BEGIN_MESSAGE_MAP瀹忓紑濮嬫秷鎭槧灝勶紝鐒跺悗涓烘瘡涓秷鎭鐞嗗嚱鏁板鍔犲畯欏癸紝鎺ョ潃浠ND_MESSAGE_MAP瀹忓畬鎴愭秷鎭槧灝勩?
CATCH
CATCH(exception_class,exception_object_pointer_name)
璇存槑錛?
浣跨敤姝ょ敤瀹氫箟涓涓唬鐮佸潡錛屾浠g爜鐢ㄦ潵鑾峰彇褰撳墠TRY鍧椾腑閮戒竴涓紓甯哥被鍨嬨傚紓甯稿鐞嗕唬鐮佸彲浠ヨ闂紓甯稿璞★紝濡備綍鍚堥傜殑璇濓紝灝變細寰楀埌鍏充簬寮傚父鐨勭壒孌婂師鍥犵殑鏇村娑堟伅銆傝皟鐢═HROW_LAST瀹忎互鎶婂鐞嗚繃紼嬩竴涓嬩竴涓閮ㄥ紓甯告鏋訛紝濡傛灉exception-class鏄被CExceptioon,閭d箞浼氳幏鍙栨墍鏈夊紓甯哥被鍨嬨傜敤鎴峰彲浠ヤ嬌鐢–Object::IsKindOf鎴愬憳鍑芥暟浠ョ‘瀹氶偅涓壒鍒紓甯歌鎺掗櫎銆備竴縐嶈幏鍙栧紓甯哥殑鏈濂芥柟寮忔槸浣跨敤欏哄簭鐨凙ND_CATCH璇彞錛屾瘡涓甫涓涓笉鍚岀殑寮傚父綾誨瀷銆傛寮傚父綾誨瀷鐨勬寚閽堢敱瀹忓畾涔夛紝鐢ㄦ埛涓嶅繀瀹氫箟銆?
娉ㄩ噴錛?
姝ATCH鍧楄瀹氫箟浣滀竴涓狢++鑼冨洿錛堢敱鑺辨嫭鍙鋒弿榪幫級銆傚鐢ㄦ埛鍦ㄦ鑼冨洿瀹氫箟鍙橀噺錛岄偅涔堝畠浠彧鍦ㄥ悆鑼冨洿鍐呭彲浠ヨ闂備粬榪樺彲浠ョ敤浜庡紓甯稿璞$殑鎸囬拡鍚嶃?
DEBUG_NEW
#define new DEBUG_NEW
璇存槑錛?
甯姪鏌ユ壘鍐呭瓨閿欒銆傜敤鎴峰湪紼嬪簭涓嬌鐢―EBUG_NEW,鐢ㄦ埛閫氬父浣跨敤new榪愮畻絎︽潵浠庡爢涓婂垎閰嶃傚湪Debug妯″紡涓嬶紙浣嗗畾涔変簡涓涓狣EBUG絎﹀彿錛夛紝DEBUG_NEW涓哄畠鍒嗛厤鐨勬瘡涓璞¤褰曟枃浠跺悕鍜岃鍙楓傜劧鍚庯紝鍦ㄧ敤鎴蜂嬌鐢–MemoryState::DumpAllObjectSince鎴愬憳鍑芥暟鏃訛紝姣忎釜浠EBUG_NEW鍒嗛厤鐨勫璞″垎閰嶇殑鍦版柟鏄劇ず鍑烘枃浠跺悕鍜岃鍙楓?涓轟簡浣跨敤DEBUG_NEW,搴斿湪鐢ㄦ埛鐨勮祫婧愭枃浠朵腑鎻掑叆浠ヤ笅鎸囦護錛?#define new DEBUG_NEW 涓鏃︾敤鎴鋒彃鍏ユ湰鎸囦護錛岄澶勭悊紼嬪簭灝嗗湪浣跨敤new鐨勫湴鏂規彃鍏EBUG_NEW錛岃孧FC浣滃叾浣欑殑宸ヤ綔銆備絾鐢ㄦ埛緙栬瘧鑷繁鐨勭▼搴忕殑涓涓彂琛岀増鏃訛紝DEBUG_NEW渚胯繘琛岀畝鍗曠殑new鎿嶄綔錛岃屼笖涓嶄駭鐢熸枃浠跺悕鍜岃鍙鋒秷鎭?
DECLARE_DYNAMIC
DECLARE_DYNAMIC(class_name)
璇存槑錛?
浣嗕粠CObject媧劇敓涓涓被鏃訛紝姝ゅ畯澧炲姞鍏充簬涓涓璞$被鐨勮闂繍琛屾椂闂村姛鑳姐傛妸DECLARE_DYNAMIC瀹忓姞鍏ョ被鐨勫ご鏂囦歡涓紝鐒跺悗鍦ㄥ叏閮ㄩ渶瑕佽闂瘝綾誨璞$殑.CPP鏂囦歡涓兘鍖呭惈姝ゆā鍧椼傚鏋滃儚鎵鎻忚堪閭f牱浣跨敤DELCARE_DYNAMIC鍜孖MPLEMENT_DYNAMIC瀹忥紝閭d箞鐢ㄦ埛渚垮彲浣跨敤RUNTIME_CLASS瀹忓拰CObject::IsKindOf鍑芥暟浠ュ湪榪愯鏃墮棿鍐沖畾瀵硅薄綾匯傚鏋淒ECLARE_DYNAMIC鍖呭惈鍦ㄧ被瀹氫箟涓紝閭d箞IMPLEMETN_DYNAMIC蹇呴』鍖呭惈鍦ㄧ被宸ュ叿涓?
DECLARE_DYNCREATE
DECLARE_DYNCREATE(class_name)
璇存槑錛?
浣跨敤DECLARE_DYNCRETE瀹忎互渚垮厑璁窩Object媧劇敓綾葷殑瀵硅薄鍦ㄨ繍琛屾椂鍒昏嚜鍔ㄥ緩绔嬨備富鏈轟嬌鐢ㄦ鍔熻兘鑷姩寤虹珛鏂板璞★紝渚嬪錛屼絾瀹冨湪涓茶鍖栬繃紼嬩腑浠庣鐩樿涓涓璞℃椂錛屾枃浠跺強瑙嗗浘鍜屾鏋剁獥搴旇鏀寔鍔ㄦ佸緩绔嬶紝鍥犱負妗嗘灦闇瑕佽嚜鍔ㄥ緩绔嬪畠銆傛妸DECLARE_DYNCREATE瀹忓姞鍏ョ被鐨?H鏂囦歡涓紝鐒跺悗鍦ㄥ叏閮ㄩ渶瑕佽闂綾誨璞$殑.CPP鏂囦歡涓寘鍚繖涓妯″紡銆傚鏋淒ECLARE_DYNCREATE鍖呭惈鍦ㄧ被瀹氫箟涓紝閭d箞IMPLEMENT_DYNCREATE蹇呴』鍖呭惈鍦ㄧ被宸ュ叿涓?
DECLARE_MESSAGE_MAP
DECLARE_MESSAGE_MAP()
璇存槑錛?
鐢ㄦ埛紼嬪簭涓殑姣忎釜CCmdTarget媧劇敓綾誨繀欏繪彁渚涙秷鎭槧灝勪互澶勭悊娑堟伅銆傚湪綾誨畾涔夌殑鏈熬浣跨敤DECLARE_MESSAGE_MAP瀹忋傛帴鐫錛屽湪瀹氫箟綾繪垚鍛樺嚱鏁扮殑.CPP鏂囦歡涓紝浣跨敤BEGIN_MESSAGE_MAP瀹忥紝姣忎釜鐢ㄦ埛娑堟伅澶勭悊鍑芥暟鐨勫畯欏逛笅闈㈢殑鍒楄〃浠ュ強END_MESSAGE_MAP瀹忋?
娉ㄩ噴錛?
濡傛灉鍦―ECLARE_MESSAGE_MAP涔嬪悗瀹氫箟浠諱綍涓涓垚鍛橈紝閭d箞蹇呴』涓轟粬浠寚瀹氫竴涓柊瀛樺彇綾誨瀷錛堝叕鍏辯殑錛岀鏈夌殑錛屼繚鎶ょ殑錛夈?
DECLARE_SERIAL
DECLARE_SERIAL(class_name)
璇存槑錛?
DECLARE_SERIAL涓轟竴涓彲浠ヤ覆琛屽寲鐨凜Object媧劇敓綾諱駭鐢熷繀瑕佺殑C++鏍囬浠g爜銆備覆琛屽寲鏄妸鏌愪釜瀵硅薄鐨勫唴瀹逛粠涓涓枃浠惰鍑哄拰鍐欏叆涓鏂囦歡銆傚湪.H鏂囦歡涓嬌鐢―ECLARE_SERIAL瀹忥紝鎺ョ潃鍦ㄩ渶瑕佽闂綾誨璞$殑鍏ㄩ儴.CPP鏂囦歡涓寘鍚鏂囦歡銆傚鏋淒ECLARE_SERIAL鍖呭惈鍦ㄧ被瀹氫箟涓紝閭d箞IMPLEMENT_SERIAL蹇呴』鍖呭惈鍦ㄧ被宸ュ叿涓侱ECLARE_SERIAL瀹忓寘鍚叏閮―ECLARE_DYNAMIC,IMPLEMENT_DYCREATE鐨勫姛鑳姐?
END_CATCH
END_CATCH
璇存槑錛?
鏍囪瘑鏈鍚庣殑CATCH鎴朅ND_CATCH鍧楃殑鏈熬銆?
END_MESSAGE_MAP
END_MESSAGE_MAP
璇存槑錛?
浣跨敤END_MESSAGE_MAP瀹忕粨鏉熺敤鎴風殑娑堟伅鏄犲皠瀹氫箟
IMPLEMENT_DYNAMIC
IMPLEMENT_DYNAMIC(class_name,base_class_name)
璇存槑錛?
閫氳繃榪愯鏃跺湪涓茶緇撴瀯涓負鍔ㄦ丆Object媧劇敓綾昏闂被鍚嶅拰浣嶇疆鏉ヤ駭鐢熷繀瑕佺殑C++浠g爜銆傚湪.CPP鏂囦歡涓嬌鐢↖MPLEMENT_DYNAMIC瀹忥紝鎺ョ潃涓嬈¢摼鎺ョ粨鏋滃璞′唬鐮?
IMPLEMENT_DYNCREATE
IMPLEMENT_DYNCREATE(class_name,base_class_name)
璇存槑錛?
閫氳繃DECLARE_DYNCREATE瀹忔潵浣跨敤IMPLEMENT_DYNCREATE瀹忥紝浠ュ厑璁窩Object媧劇敓綾誨璞″湪榪愯鏃惰嚜鍔ㄥ緩绔嬨備富鏈轟嬌鐢ㄦ鍔熻兘鑷姩寤虹珛瀵硅薄錛屼緥濡傦紝浣嗗畠鍦ㄤ覆琛屽寲榪囩▼涓粠紓佺洏璇誨幓涓涓璞℃椂錛屼粬鍦ㄧ被宸ュ叿閲屽姞鍏MPLEMENT_DYNCREATE瀹忋傝嫢鐢ㄦ埛浣跨敤DECLARE_DYNCREATE鍜孖MPLEMENT_DYNCREATE瀹?閭d箞鎺ョ潃浣跨敤RUNTIME_CLASS瀹忓拰CObject::IsKindOf鎴愬憳鍑芥暟浠ュ湪榪愯鏃剁‘瀹氬璞$被銆傝嫢declare_dyncreate鍖呭惈鍦ㄥ畾涔変腑錛岄偅涔圛MPLEMENT_DYNCREATE蹇呴』鍖呭惈鍦ㄧ被宸ュ叿涓?
IMPLEMENT_SERIAL
IMPLEMENT_SERIAL(class_name,base_class_name,wSchema)
璇存槑錛?
閫氳繃榪愯鏃跺湪涓茶緇撴瀯涓姩鎬丆Object媧劇敓綾昏闂被鍚嶅拰浣嶇疆鏉ュ緩绔嬪繀瑕佺殑C++浠g爜銆傚湪.CPP鏂囦歡涓嬌鐢↖MPLEMENT_SERIAL瀹忥紝鐒跺悗涓嬈¢摼鎺ョ粨鏋滃璞′唬鐮併?
ON_COMMAND
ON_COMMAND(id,memberFxn)
璇存槑錛?
姝ゅ畯閫氳繃ClassWizard鎴栨墜宸ユ彃鍏ヤ竴涓秷鎭槧灝勩傚畠琛ㄦ槑閭d釜鍑芥暟灝嗕粠涓涓懡浠ょ敤鎴鋒帴鍙o紙渚嬪涓涓彍鍗曢」鎴杢oolbar鎸夐挳錛夊鐞嗕竴涓懡浠ゆ秷鎭傚綋涓涓懡浠ゅ璞¢氳繃鎸囧畾鐨処D鎺ュ彈鍒頒竴涓猈indows WM_COMMAND娑堟伅鏃訛紝ON_COMMAND灝嗚皟鐢ㄦ垚鍛樺嚱鏁癿emberFxn澶勭悊姝ゆ秷鎭傚湪鐢ㄦ埛鐨勬秷鎭槧灝勪腑錛屽浜庢瘡涓彍鍗曟垨鍔犻熷櫒鍛戒護錛堝繀欏昏鏄犲皠鍒頒竴涓秷鎭鐞嗗嚱鏁幫級搴旇紜疄鏈変竴涓狾N_COMMAND瀹忚鍙ャ?
ON_CONTROL
ON_CONTROL(wNotifyCode,id,memberFxn)
璇存槑錛?
琛ㄦ槑鍝釜鍑芥暟灝嗗鐞嗕竴涓父瑙勬帶鍒惰〃紺烘秷鎭傛帶鍒舵爣璇嗘秷鎭槸閭d簺浠庝竴涓帶鍒跺か鍙戦佸埌姣嶇獥鍙g殑娑堟伅銆?
ON_MESSAGE
ON_MESSAGE(message,memberFxn)
璇存槑錛?
鎸囨槑鍝釜鍑芥暟灝嗗鐞嗕竴鐢ㄦ埛瀹氫箟娑堟伅銆傜敤鎴峰畾涔夋秷鎭氬父瀹氫箟鍦╓M_USER鍒?x7FF鑼冨洿鍐呫傜敤鎴峰畾涔夋秷鎭槸閭d簺涓嶆槸鏍囧噯Windows WM_MESSAGE娑堟伅鐨勪換浣曟秷鎭傚湪鐢ㄦ埛鐨勬秷鎭槧灝勪腑錛屾瘡涓繀欏昏鏄犲皠鍒頒竴涓秷鎭鐞嗗嚱鏁般傜敤鎴峰畾涔夋秷鎭簲璇ユ湁涓涓狾N_MESSAGE瀹忚鍙ャ?
ON_REGISTERED_MESSAGE
ON_REGISTERED_MESSAGE(nmessageVarible,memberFxn)
璇存槑錛?
Windows鐨凴egisterWindowsMesage鍑芥暟鐢ㄤ簬瀹氫箟涓涓柊紿楀彛娑堟伅錛屾娑堟伅淇濊瘉鍦ㄦ暣涓郴緇熶腑鏄敮涓鐨勩傛瀹忚〃鏄庡摢涓嚱鏁板鐞嗗凡娉ㄥ唽娑堟伅銆傚彉閲弉MessageViable搴斾互NEAR淇グ絎︽潵瀹氫箟銆?
ON_UPDATE_COMMAND_UI
ON_UPDATE_COMMAND_UI(id錛宮emberFxn)
璇存槑錛?
姝ゅ畯閫氬父閫氳繃ClassWizard琚彃鍏ヤ竴涓秷鎭槧灝勶紝浠ユ寚鏄庡摢涓嚱鏁板皢澶勭悊涓涓敤鎴鋒帴鍙d釜鏇存敼鍛戒護娑堟伅銆傚湪鐢ㄦ埛鐨勬秷鎭槧灝勪腑錛屾瘡涓敤鎴鋒帴鍙f洿鏀瑰懡浠わ紙姣旇琚槧灝勫埌涓涓秷鎭鐞嗗嚱鏁幫級搴旇鏈変竴涓狾N_UPDATE_COMMAND_UI瀹忚鍙ャ?
ON_VBXEVENT
ON_VBXEVENT(wNotifyCode,memberFxn)
璇存槑錛?
姝ゅ畯閫氬父閫氳繃ClassWizard琚彃鍏ヤ竴涓秷鎭槧灝勶紝浠ユ寚鏄庡摢涓嚱鏁板皢澶勭悊涓涓潵鑷猇BX鎺у埗鐨勬秷鎭傚湪鐢ㄦ埛鐨勬秷鎭槧灝勪腑姣忎釜琚槧灝勫埌涓娑堟伅澶勭悊鍑芥暟鐨刅BX鎺у埗娑堟伅搴旇鏈変竴涓畯璇彞銆?
RUNTIME_CLASS
RUNTIME_CLASS(class_name)
璇存槑錛?
浣跨敤姝ゅ畯浠巆++綾繪皯浼楄幏鍙栬繍琛屾椂綾葷粨鏋勩俁UNTIME_CLASS涓虹敱class_name鎸囧畾鐨勭被榪斿洖涓涓寚閽堝埌CRuntimeClass緇撴瀯銆傚彧鏈変互DECLARE_DYNAMIC,DECLARE_DYNCREATE鎴朌ECLARE_SERIAL瀹氫箟鐨凜Object媧劇敓綾繪墠榪斿洖鍒頒竴涓狢RuntimeClass緇撴瀯鐨勬寚閽堛?
THROW
THROW(exception_object_pointer)
璇存槑錛?
媧懼嚭鎸囧畾鐨勫紓甯搞俆HROW涓柇紼嬪簭鐨勮繍琛岋紝鎶婃帶鍒朵紶閫掔粰鐢ㄦ埛紼嬪簭涓殑鐩稿叧鐨凜ATCH鍧椼傚鏋滅敤鎴鋒病鏈夋彁渚汣ATCH鍧楋紝閭d箞鎺у埗琚紶閫掑埌涓涓狹FC妯″潡錛屼粬鎵撳嵃鍑轟竴涓敊璇茍緇堟榪愯銆?
THROW_LAST
THROW_LAST()
璇存槑錛?
姝ゅ畯鍏佽鐢ㄦ埛媧懼嚭涓涓眬閮ㄥ緩绔嬬殑寮傚父銆傚鏋滅敤鎴瘋瘯鍥炬帓闄や竴涓垰鍙戠幇鐨勫紓甯革紝閭d箞涓鑸寮傚父灝嗘孩鍑哄茍琚垹闄ゃ備嬌鐢═HROW_LAST,姝ゅ紓甯歌鐩存帴浼犻佸埌涓嬩竴涓狢ATCH澶勭悊紼嬪簭銆?
TRACE
TRACE(exp)
璇存槑錛?
鎶婁竴涓牸寮忓寲瀛楃涓查佸埌杞偍璁懼錛屼緥濡傦紝鏂囦歡鎴栬皟璇曠洃瑙嗗櫒錛岃屾彁渚涗笌printf鐩鎬技鐨勫姛鑳姐傚悓MS_DOS涓婥紼嬪簭鐨刾rintf涓鏍鳳紝TRACE瀹忔槸涓涓湪紼嬪簭榪愯鏃惰窡韙彉閲忓肩殑鏂逛究褰㈠紡銆傚湪DEBUG鐜涓紝TRACE瀹忚緭鍑哄埌afxDump銆傚湪Release鐗堜腑浠栦笉鍋氫換浣曞伐浣溿?
娉ㄩ噴錛?
姝ゅ畯鍙湪MFC鐨凞EBUG鐗堜腑鏈夋晥銆?
TRACE0
TRACE0(exp)
璇存槑錛?
涓嶵RACE鐩鎬技錛屼絾浠栨妸璺熻釜瀛楃涓叉斁鍦ㄤ唬鐮佹涓紝鑰屼笉鏄疍GROUP,鍥犳浣跨敤灝戠殑DGROUP絀洪棿銆俆RACE0鏄竴緇勮窡韙畯鐨勪竴涓彉浣擄紝榪欎簺瀹忓彲鐢ㄤ簬璋冭瘯杈撳嚭銆傝繖涓緇勫寘鎷琓RACE0,TRACE1,TRACE2鍜孴RACE3,榪欎簺瀹忎笉鍚屽湪浜庢墍鍙栧弬鏁扮殑鏁扮洰涓嶅悓銆俆RACE0鍙彇涓涓牸寮忓寲瀛楃涓插茍鍙敤浜庣畝鍗曟枃鏈秷鎭俆RACE1鍙栦竴鏍煎紡鍖栧瓧絎︿覆鍔犱笂涓涓彉閲忊斺斾竴涓皢杞偍鐨勫彉閲忋傚悓鏍鳳紝TRACE2,TRACE3鍒嗗埆鍙?涓垨3涓弬鏁幫紙鍦ㄦ牸寮忓寲瀛楃涓蹭箣鍚庯級銆傚鏋滅敤鎴蜂互渚夸互浜嗗簲鐢ㄧ▼搴忕殑鍙戣鐗堬紝閭d箞瀹冨彧鎶婃暟鎹漿鍌ㄥ埌afxDump銆?
娉ㄩ噴錛?
姝ゅ畯鍙湪MFC鐨凞EBUG涓湁鏁堛?
TRACE1
TRACE1(exp,param1)
璇存槑錛?
鍙傝TRACE0
TRACE2
TRACE2(exp,param1,param2)
璇存槑錛?
鍙傝TRACE0
TRACE3
TRACE3(exp,param1,param2,param3)
璇存槑錛?
TRY
TRY
璇存槑錛?
浣跨敤姝ゅ畯寤虹珛涓TRY鍧椼備竴涓猅RY璇嗗埆涓涓彲鎺掗櫎寮傚父鐨勪唬鐮佸潡銆傝繖浜涘紓甯稿湪闅忓悗鐨凜ATCH鍜孉ND_CATCH鍧楀鐞嗐備紶閫掓槸鍏佽鐨勶細寮傚父鍙互浼犻掍竴涓閮═RY鍧楋紝鎴栬呭拷鐣ュ畠浠垨鑰呬嬌鐢═HROW_LAST瀹忋?
VERIFY
VERIFY(booleanExpression)
璇存槑錛?
鍦∕FC鐨凞EBUG鐗堜腑錛孷ERIFY瀹忚綆楀畠鐨勫彉閲忓箋?濡傛灉緇撴灉涓?錛岄偅涔堝畯鎵撳嵃涓涓瘖鏂秷鎭茍涓紼嬪簭銆傚鏋滄潯浠朵笉涓?錛岄偅涔堜粈涔堝伐浣滀篃涓嶄綔銆?璇婃柇鏈夊涓嬪艦寮忥細 assertion failed in file in line 鍏朵腑name鏄簮鏂囦歡鐨勫悕瀛楋紝num鏄湪婧愭枃浠朵腑澶辮觸鐨勪腑姝㈣鍙楓傚湪MFC鐨凴elease鐗堜腑錛孷ERIFY璁$畻琛ㄨ揪寮忓間絾涓嶆墦鍗版垨涓紼嬪簭銆備緥濡傦細濡傛灉琛ㄨ揪寮忔槸涓嚱鏁拌皟鐢紝閭d箞璋冪敤鎴愬姛銆?/font>
]]>
]]>
]]>
浜屻佸悜欏圭洰涓坊鍔犱竴涓悕涓篩ourApp.exe.manifest鐨勬枃浠訛紝鍏朵腑鐨刌ourApp灝卞啓浣犵殑鍙墽琛屾枃浠剁殑鍚嶇О錛岃繖涓枃浠跺叿鏈塜ML鏍煎紡錛?br />
涓夈佸湪搴旂敤紼嬪簭鐨勮祫婧愭枃浠訛紙YourApp.rc錛夌殑欏墮儴涓坊鍔犺繖鏍風殑涓琛岃鍙ワ細
鎴戝湪紼嬪簭涓病鏈夊仛絎竴姝ヤ篃鑳芥垚鍔燂紝鍙兘鏄洜涓烘病鏈夌敤API鍒涘緩鐨勭獥鍙f垨鍔ㄦ佺獥鍙o紝鍦ㄧ▼搴忎腑濡傛灉璋冪敤浜咰reateWindow鍑芥暟鍘誨垱寤虹獥鍙o紝鍒欓渶瑕佹墽琛岀涓姝ャ?/p>
2)C 璇█鏄墍璋撶殑鈥滃皬鍐呮牳鈥濊璦錛屽氨鍏惰璦鏈韓鏉ヨ寰堝皬錛堜笉澶氱殑鍏抽敭瀛楋紝紼嬪簭嫻佺▼鎺у埗錛屾暟鎹被鍨嬬瓑錛夛紱鎵浠ワ紝C 璇█鍐呮牳寮鍙戝嚭鏉ヤ箣鍚庯紝Dennis Ritchie 鍜?Brian Kernighan 灝辯敤 C 鏈韓閲嶅啓浜?90% 浠ヤ笂鐨?UNIX 緋葷粺鍑芥暟錛屽茍涓旀妸鍏朵腑鏈甯哥敤鐨勯儴鍒嗙嫭绔嬪嚭鏉ワ紝褰㈡垚澶存枃浠跺拰瀵瑰簲鐨?LIBRARY錛孋 run-time library 灝辨槸榪欐牱褰㈡垚鐨勩?/p>
3)闅忓悗錛岄殢鐫 C 璇█鐨勬祦琛岋紝鍚勪釜 C 緙栬瘧鍣ㄧ殑鐢熶駭鍟?涓綋/鍥綋閮介伒寰佺殑浼犵粺錛屽湪涓嶅悓騫沖彴涓婇兘鏈夌浉瀵瑰簲鐨?Standard Library錛屼絾澶ч儴鍒嗗疄鐜伴兘鏄笌鍚勪釜騫沖彴鏈夊叧鐨勩傜敱浜庡悇涓?C 緙栬瘧鍣ㄥ C 鐨勬敮鎸佸拰鐞嗚В鏈夊緢澶氬垎姝у拰寰鐨勫樊鍒紝鎵浠ュ氨鏈変簡 ANSI C錛汚NSI C 錛堜富瑙傛剰鍥句笂錛夎緇嗙殑瑙勫畾浜?C 璇█鍚勪釜瑕佺礌鐨勫叿浣撳惈涔夊拰緙栬瘧鍣ㄥ疄鐜拌姹傦紝寮曡繘浜嗘柊鐨勫嚱鏁板0鏄庢柟寮忥紝鍚屾椂璁㈢珛浜?Standard Library 鐨勬爣鍑嗗艦寮忋傛墍浠榪愯鏃跺簱鐢辯紪璇戝櫒鐢熶駭鍟嗘彁渚涖傝嚦浜庣敱鍏朵粬鍘傚晢/涓漢/鍥綋鎻愪緵鐨勫ご鏂囦歡鍜屽簱鍑芥暟錛屽簲褰撶О涓虹涓夋柟 C 榪愯搴擄紙Third party C run-time libraries錛夈?/p>
4)C run-time library閲岄潰鍚湁鍒濆鍖栦唬鐮侊紝榪樻湁閿欒澶勭悊浠g爜(渚嬪divide by zero澶勭悊)銆備綘鍐欑殑紼嬪簭鍙互娌℃湁math搴擄紝紼嬪簭鐓ф牱榪愯錛屽彧鏄笉鑳藉鐞嗗鏉傜殑鏁板榪愮畻錛屼笉榪囧鏋滄病鏈変簡C run-time搴擄紝main()灝變笉浼氳璋冪敤錛宔xit()涔熶笉鑳借鍝嶅簲銆傚洜涓篊 run-time library鍖呭惈浜咰紼嬪簭榪愯鐨勬渶鍩烘湰鍜屾渶甯哥敤鐨勫嚱鏁般?/p>
5)鍒頒簡 C++ 涓栫晫閲岋紝鏈夊彟澶栦竴涓蹇?Standard C++ Library,瀹冨寘鎷簡涓婇潰鎵璇寸殑 C run-time library 鍜?STL銆傚寘鍚?C run-time library 鐨勫師鍥犲緢鏄庢樉錛孋++ 鏄?C 鐨勮秴闆嗭紝娌℃湁鐞嗙敱鍐嶉噸鏂版潵涓涓?C++ run-time library. VC閽堝C++ 鍔犲叆鐨凷tandard C++ Library涓昏鍖呮嫭錛歀IBCP.LIB, LIBCPMT.LIB鍜?MSVCPRT.LIB
6)Windows鐜涓嬶紝VC鎻愪緵鐨?C run-time library鍙堝垎涓哄姩鎬佽繍琛屾椂搴撳拰闈欐佽繍琛屾椂搴撱?br />鍔ㄦ佽繍琛屾椂搴撲富瑕佹槸DLL搴撴枃浠秏svcrt.dll(or MSVCRTD.DLL for debug build),瀵瑰簲鐨処mport library鏂囦歡鏄疢SVCRT.LIB(MSVCRTD.LIB for debug build)
闈欐佽繍琛屾椂搴?release鐗?瀵瑰簲鐨勪富瑕佹枃浠舵槸錛?br />LIBC.LIB (Single thread static library, retail version)
LIBCMT.LIB (Multithread static library, retail version)
msvcrt.dll鎻愪緵鍑犲崈涓狢鍑芥暟錛屽嵆浣挎槸鍍弍rintf榪欎箞浣庣駭鐨勫嚱鏁伴兘鍦╩svcrt.dll閲屻傚叾瀹炰綘鐨勭▼搴忚繍琛屾椂錛屽緢澶т竴閮ㄥ垎鏃墮棿鏃跺湪榪欎簺榪愯搴撻噷榪愯銆傚湪浣犵殑紼嬪簭(release鐗?琚紪璇戞椂錛孷C浼氭牴鎹綘鐨勭紪璇戦夐」(鍗曠嚎紼嬨佸綰跨▼鎴朌LL)鑷姩灝嗙浉搴旂殑榪愯鏃跺簱鏂囦歡(libc.lib,libcmt.lib鎴朓mport library msvcrt.lib)閾炬帴榪涙潵銆?/p>
緙栬瘧鏃跺埌搴曞摢涓狢 run-time library鑱斿叆浣犵殑紼嬪簭鍙栧喅浜庣紪璇戦夐」錛?br />/MD, /ML, /MT, /LD聽聽 (Use Run-Time Library)
浣犲彲浠C涓氳繃浠ヤ笅鏂規硶璁劇疆閫夋嫨鍝釜C run-time library鑱斿叆浣犵殑紼嬪簭錛?br />To find these options in the development environment, click Settings on the Project menu. Then click the C/C++ tab, and click Code Generation in the Category box. See the Use Run-Time Library drop-down box.
浠庣▼搴忓彲縐繪鎬ц冭檻,濡傛灉涓ゅ嚱鏁伴兘鍙畬鎴愪竴縐嶅姛鑳斤紝閫夎繍琛屾椂搴撳嚱鏁板ソ,鍥犱負鍚勪釜 C 緙栬瘧鍣ㄧ殑鐢熶駭鍟嗗鏍囧噯C Run-time library鎻愪緵浜嗙粺涓鐨勬敮鎸?