锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清免费在线,亚洲先锋成人,久久精品亚洲乱码伦伦中文http://m.shnenglu.com/jackdongy/category/20069.htmlHCP楂樻ц兘璁$畻鏋舵瀯錛屽疄鐜幫紝緙栬瘧鍣ㄦ寚浠や紭鍖栵紝綆楁硶浼樺寲錛? LLVM CLANG OpenCL CUDA OpenACC C++AMP OpenMP MPIzh-cnMon, 19 Nov 2012 02:45:17 GMTMon, 19 Nov 2012 02:45:17 GMT60__stdcall,__cdecl鍖哄埆綆浠?杞?http://m.shnenglu.com/jackdongy/archive/2012/11/14/195184.htmljackdongjackdongWed, 14 Nov 2012 03:03:00 GMThttp://m.shnenglu.com/jackdongy/archive/2012/11/14/195184.htmlhttp://m.shnenglu.com/jackdongy/comments/195184.htmlhttp://m.shnenglu.com/jackdongy/archive/2012/11/14/195184.html#Feedback0http://m.shnenglu.com/jackdongy/comments/commentRss/195184.htmlhttp://m.shnenglu.com/jackdongy/services/trackbacks/195184.html__stdcall,__cdecl鍖哄埆綆浠?/a>__stdcall,__cdecl,_cdecl,_stdcall,銆俖_fastcall,_fastcall 鍖哄埆綆浠?br />
1.

浠婂ぉ鍐欑嚎紼嬪嚱鏁版椂錛屽彂鐜癿sdn涓ThreadProc鐨勫畾涔夋湁瑕佹眰錛欴WORD WINAPI ThreadProc(LPVOID lpParameter);

涓嶈В涓轟粈涔堣鐢╓INAPI瀹忓畾涔夛紝鏌ヤ簡鍚庡彂鐜頒笅闈㈢殑瀹氫箟銆備簬鏄箮闇瑕佸尯鍒玙_stdcall鍜宊_cdecl涓よ呯殑鍖哄埆錛?#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#define cdecl _cdecl
#ifndef CDECL
#define CDECL _cdecl
#endif

鍑犱箮鎴戜滑鍐欑殑姣忎竴涓猈INDOWS API鍑芥暟閮芥槸__stdcall綾誨瀷鐨勶紝棣栧厛錛岄渶瑕佷簡瑙d袱鑰呬箣闂寸殑鍖哄埆錛?WINDOWS鐨勫嚱鏁拌皟鐢ㄦ椂闇瑕佺敤鍒版爤錛圫TACK錛屼竴縐嶅厛鍏ュ悗鍑虹殑瀛樺偍緇撴瀯錛夈傚綋鍑芥暟璋冪敤瀹屾垚鍚庯紝鏍堥渶瑕佹竻妤氾紝榪欓噷灝辨槸闂鐨勫叧閿紝濡備綍娓呴櫎錛燂紵濡傛灉鎴戜滑鐨勫嚱鏁頒嬌鐢ㄤ簡_cdecl錛岄偅涔堟爤鐨勬竻闄ゅ伐浣滄槸鐢辮皟鐢ㄨ咃紝鐢–OM鐨勬湳璇潵璁插氨鏄鎴鋒潵瀹屾垚鐨勩傝繖鏍峰甫鏉ヤ簡涓涓鎵嬬殑闂錛屼笉鍚岀殑緙栬瘧鍣ㄤ駭鐢熸爤鐨勬柟寮忎笉灝界浉鍚岋紝閭d箞璋冪敤鑰呰兘鍚︽甯哥殑瀹屾垚娓呴櫎宸ヤ綔鍛紵絳旀鏄笉鑳姐傚鏋滀嬌鐢╛_stdcall錛屼笂闈㈢殑闂灝辮В鍐充簡錛屽嚱鏁拌嚜宸辮В鍐蟲竻闄ゅ伐浣溿傛墍浠ワ紝鍦ㄨ法錛堝紑鍙戯級騫沖彴鐨勮皟鐢ㄤ腑錛屾垜浠兘浣跨敤__stdcall錛堣櫧鐒舵湁鏃舵槸浠?WINAPI鐨勬牱瀛愬嚭鐜幫級銆傞偅涔堜負浠涔堣繕闇瑕乢cdecl鍛紵褰撴垜浠亣鍒拌繖鏍風殑鍑芥暟濡俧printf()瀹冪殑鍙傛暟鏄彲鍙樼殑錛屼笉瀹氶暱鐨勶紝琚皟鐢ㄨ呬簨鍏堟棤娉曠煡閬撳弬鏁扮殑闀垮害錛屼簨鍚庣殑娓呴櫎宸ヤ綔涔熸棤娉曟甯哥殑榪涜錛屽洜姝わ紝榪欑鎯呭喌鎴戜滑鍙兘浣跨敤_cdecl銆傚埌榪欓噷鎴戜滑鏈変竴涓粨璁猴紝濡傛灉浣犵殑紼嬪簭涓病鏈夋秹鍙婂彲鍙樺弬鏁幫紝鏈濂戒嬌鐢╛_stdcall鍏抽敭瀛椼?br />
2.

__cdecl,__stdcall鏄0鏄庣殑鍑芥暟璋冪敤鍗忚.涓昏鏄紶鍙傚拰寮規(guī)爤鏂歸潰鐨勪笉鍚?涓鑸琧++鐢ㄧ殑鏄痏_cdecl,windows閲屽ぇ閮界敤鐨勬槸__stdcall(API)

__cdecl鏄疌/C++鍜孧FC紼嬪簭榛樿浣跨敤鐨勮皟鐢ㄧ害瀹氾紝涔熷彲浠ュ湪鍑芥暟澹版槑鏃跺姞涓奯_cdecl鍏抽敭瀛楁潵鎵嬪伐鎸囧畾銆傞噰鐢╛_cdecl綰﹀畾鏃訛紝鍑芥暟鍙傛暟鎸夌収浠庡彸鍒板乏鐨勯『搴忓叆鏍堬紝騫朵笖鐢辮皟鐢ㄥ嚱鏁拌呮妸鍙傛暟寮瑰嚭鏍堜互娓呯悊鍫嗘爤銆傚洜姝わ紝瀹炵幇鍙彉鍙傛暟鐨勫嚱鏁板彧鑳戒嬌鐢ㄨ璋冪敤綰﹀畾銆傜敱浜庢瘡涓涓嬌鐢?__cdecl綰﹀畾鐨勫嚱鏁伴兘瑕佸寘鍚竻鐞嗗爢鏍堢殑浠g爜錛屾墍浠ヤ駭鐢熺殑鍙墽琛屾枃浠跺ぇ灝忎細姣旇緝澶с俖_cdecl鍙互鍐欐垚_cdecl銆?br />__stdcall璋冪敤綰﹀畾鐢ㄤ簬璋冪敤Win32 API鍑芥暟銆傞噰鐢╛_stdcall綰﹀畾鏃訛紝鍑芥暟鍙傛暟鎸夌収浠庡彸鍒板乏鐨勯『搴忓叆鏍堬紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鏍堬紝鍑芥暟鍙傛暟涓暟鍥哄畾銆傜敱浜庡嚱鏁頒綋鏈韓鐭ラ亾浼犺繘鏉ョ殑鍙傛暟涓暟錛屽洜姝よ璋冪敤鐨勫嚱鏁板彲浠ュ湪榪斿洖鍓嶇敤涓鏉et n鎸囦護鐩存帴娓呯悊浼犻掑弬鏁扮殑鍫嗘爤銆俖_stdcall鍙互鍐欐垚_stdcall銆?br />__fastcall綰﹀畾鐢ㄤ簬瀵規(guī)ц兘瑕佹眰闈炲父楂樼殑鍦哄悎銆俖_fastcall綰﹀畾灝嗗嚱鏁扮殑浠庡乏杈瑰紑濮嬬殑涓や釜澶у皬涓嶅ぇ浜?涓瓧鑺傦紙DWORD錛夌殑鍙傛暟鍒嗗埆鏀懼湪ECX鍜孍DX瀵勫瓨鍣紝鍏朵綑鐨勫弬鏁頒粛鏃ц嚜鍙沖悜宸﹀帇鏍堜紶閫侊紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍫嗘爤銆俖_fastcall鍙互鍐欐垚 _fastcall

3.

__stdcall:

_stdcall 璋冪敤綰﹀畾鐩稿綋浜?6浣嶅姩鎬佸簱涓粡甯鎬嬌鐢ㄧ殑PASCAL璋冪敤綰﹀畾銆?br />
 
鍦?2浣嶇殑VC++5.0涓璓ASCAL璋冪敤綰﹀畾涓嶅啀琚敮鎸侊紙瀹為檯涓婂畠宸茶瀹氫箟涓篲_stdcall銆傞櫎浜哶_pascal 澶栵紝__fortran鍜宊_syscall涔熶笉琚敮鎸侊級錛屽彇鑰屼唬涔嬬殑鏄痏_stdcall璋冪敤綰﹀畾銆備袱鑰呭疄璐ㄤ笂鏄竴鑷寸殑錛屽嵆鍑芥暟鐨勫弬鏁拌嚜鍙沖悜宸﹂氳繃鏍堜紶閫掞紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬紝浣嗕笉鍚岀殑鏄嚱鏁板悕鐨勪慨楗伴儴鍒嗭紙鍏充簬鍑芥暟鍚嶇殑淇グ閮ㄥ垎鍦ㄥ悗闈㈠皢璇︾粏璇存槑錛夈?br />
_stdcall鏄疨ascal紼嬪簭鐨勭己鐪佽皟鐢ㄦ柟寮忥紝閫氬父鐢ㄤ簬Win32 Api涓紝鍑芥暟閲囩敤浠庡彸鍒板乏鐨勫帇鏍堟柟寮忥紝鑷繁鍦ㄩ鍑烘椂娓呯┖鍫嗘爤銆俈C灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑芥暟鍚嶅墠闈㈠姞涓婁笅鍒掔嚎鍓嶇紑錛屽湪鍑芥暟鍚嶅悗鍔犱笂"@"鍜屽弬鏁扮殑瀛楄妭鏁般?br />
_cdecl:

_cdecl c璋冪敤綰﹀畾, 鎸変粠鍙寵嚦宸︾殑欏哄簭鍘嬪弬鏁板叆鏍堬紝鐢辮皟鐢ㄨ呮妸鍙傛暟寮瑰嚭鏍堛傚浜庝紶閫佸弬鏁扮殑鍐呭瓨鏍堟槸鐢辮皟鐢ㄨ呮潵緇存姢鐨勶紙姝e洜涓哄姝わ紝瀹炵幇鍙彉鍙傛暟鐨勫嚱鏁板彧鑳戒嬌鐢ㄨ璋冪敤綰﹀畾錛夈傚彟澶栵紝鍦ㄥ嚱鏁板悕淇グ綰﹀畾鏂歸潰涔熸湁鎵涓嶅悓銆?br />
_cdecl鏄疌鍜孋錛嬶紜紼嬪簭鐨勭己鐪佽皟鐢ㄦ柟寮忋傛瘡涓涓皟鐢ㄥ畠鐨勫嚱鏁伴兘鍖呭惈娓呯┖鍫嗘爤鐨勪唬鐮侊紝鎵浠ヤ駭鐢熺殑鍙墽琛屾枃浠跺ぇ灝忎細姣旇皟鐢╛stdcall鍑芥暟鐨勫ぇ銆傚嚱鏁伴噰鐢ㄤ粠鍙沖埌宸︾殑鍘嬫爤鏂瑰紡銆俈C灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑芥暟鍚嶅墠闈㈠姞涓婁笅鍒掔嚎鍓嶇紑銆傛槸MFC緙虹渷璋冪敤綰﹀畾銆?br />
__fastcall:

__fastcall璋冪敤綰﹀畾鏄?浜?濡傚叾鍚嶏紝瀹冪殑涓昏鐗圭偣灝辨槸蹇紝鍥犱負瀹冩槸閫氳繃瀵勫瓨鍣ㄦ潵浼犻佸弬鏁扮殑錛堝疄闄呬笂錛屽畠鐢‥CX鍜孍DX浼犻佸墠涓や釜鍙屽瓧錛圖WORD錛夋垨鏇村皬鐨勫弬鏁幫紝鍓╀笅鐨勫弬鏁頒粛鏃ц嚜鍙沖悜宸﹀帇鏍堜紶閫侊紝琚皟鐢ㄧ殑鍑芥暟鍦ㄨ繑鍥炲墠娓呯悊浼犻佸弬鏁扮殑鍐呭瓨鏍堬級錛屽湪鍑芥暟鍚嶄慨楗扮害瀹氭柟闈紝瀹冨拰鍓嶄袱鑰呭潎涓嶅悓銆?br />
_fastcall鏂瑰紡鐨勫嚱鏁伴噰鐢ㄥ瘎瀛樺櫒浼犻掑弬鏁幫紝VC灝嗗嚱鏁扮紪璇戝悗浼氬湪鍑芥暟鍚嶅墠闈㈠姞涓?@"鍓嶇紑錛屽湪鍑芥暟鍚嶅悗鍔犱笂"@"鍜屽弬鏁扮殑瀛楄妭鏁般?br />
thiscall:

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

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

鍏抽敭瀛?__stdcall銆乢_cdecl鍜宊_fastcall鍙互鐩存帴鍔犲湪瑕佽緭鍑虹殑鍑芥暟鍓嶏紝涔熷彲浠ュ湪緙栬瘧鐜鐨凷etting...\C/C++ \Code Generation欏歸夋嫨銆傚綋鍔犲湪杈撳嚭鍑芥暟鍓嶇殑鍏抽敭瀛椾笌緙栬瘧鐜涓殑閫夋嫨涓嶅悓鏃訛紝鐩存帴鍔犲湪杈撳嚭鍑芥暟鍓嶇殑鍏抽敭瀛楁湁鏁堛傚畠浠搴旂殑鍛戒護琛屽弬鏁板垎鍒負/Gz銆?/Gd鍜?Gr銆傜己鐪佺姸鎬佷負/Gd錛屽嵆__cdecl銆?br />
瑕佸畬鍏ㄦā浠縋ASCAL璋冪敤綰﹀畾棣栧厛蹇呴』浣跨敤__stdcall璋冪敤綰﹀畾錛岃嚦浜庡嚱鏁板悕淇グ綰﹀畾錛屽彲浠ラ氳繃鍏跺畠鏂規(guī)硶妯′豢銆傝繕鏈変竴涓煎緱涓鎻愮殑鏄?WINAPI瀹忥紝Windows.h鏀寔璇ュ畯錛屽畠鍙互灝嗗嚭鍑芥暟緲昏瘧鎴愰傚綋鐨勮皟鐢ㄧ害瀹氾紝鍦╓IN32涓紝瀹冭瀹氫箟涓篲_stdcall銆備嬌鐢╓INAPI瀹忓彲浠ュ垱寤鴻嚜宸辯殑APIs銆?br />
鍚嶅瓧淇グ綰﹀畾

1銆佷慨楗板悕(Decoration name)
“C”鎴栬?#8220;C++”鍑芥暟鍦ㄥ唴閮紙緙栬瘧鍜岄摼鎺ワ級閫氳繃淇グ鍚嶈瘑鍒備慨楗板悕鏄紪璇戝櫒鍦ㄧ紪璇戝嚱鏁板畾涔夋垨鑰呭師鍨嬫椂鐢熸垚鐨勫瓧絎︿覆銆傛湁浜涙儏鍐典笅浣跨敤鍑芥暟鐨勪慨楗板悕鏄繀瑕佺殑錛屽鍦ㄦā鍧楀畾涔夋枃浠墮噷澶存寚瀹氳緭鍑?#8220;C++”閲嶈澆鍑芥暟銆佹瀯閫犲嚱鏁般佹瀽鏋勫嚱鏁幫紝鍙堝鍦ㄦ眹緙栦唬鐮侀噷璋冪敤“C””鎴?#8220;C++”鍑芥暟絳夈?br />
淇グ鍚嶇敱鍑芥暟鍚嶃佺被鍚嶃佽皟鐢ㄧ害瀹氥佽繑鍥炵被鍨嬨佸弬鏁扮瓑鍏卞悓鍐沖畾銆?br />
2銆佸悕瀛椾慨楗扮害瀹氶殢璋冪敤綰﹀畾鍜岀紪璇戠綾?C鎴朇++)鐨勪笉鍚岃屽彉鍖栥傚嚱鏁板悕淇グ綰﹀畾闅忕紪璇戠綾誨拰璋冪敤綰﹀畾鐨勪笉鍚岃屼笉鍚岋紝涓嬮潰鍒嗗埆璇存槑銆?br />
a銆丆緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?br />
__stdcall璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓笅鍒掔嚎鍓嶇紑錛屽悗闈㈠姞涓婁竴涓?#8220;@”絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛屾牸寮忎負_functionname@number銆?br />
__cdecl璋冪敤綰﹀畾浠呭湪杈撳嚭鍑芥暟鍚嶅墠鍔犱笂涓涓笅鍒掔嚎鍓嶇紑錛屾牸寮忎負_functionname銆?br />
__fastcall璋冪敤綰﹀畾鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞涓婁竴涓?#8220;@”絎﹀彿錛屽悗闈篃鏄竴涓?#8220;@”絎﹀彿鍜屽叾鍙傛暟鐨勫瓧鑺傛暟錛屾牸寮忎負@functionname@number銆?br />
瀹冧滑鍧囦笉鏀瑰彉杈撳嚭鍑芥暟鍚嶄腑鐨勫瓧絎﹀ぇ灝忓啓錛岃繖鍜孭ASCAL璋冪敤綰﹀畾涓嶅悓錛孭ASCAL綰﹀畾杈撳嚭鐨勫嚱鏁板悕鏃犱換浣曚慨楗頒笖鍏ㄩ儴澶у啓銆?br />
b銆丆++緙栬瘧鏃跺嚱鏁板悕淇グ綰﹀畾瑙勫垯錛?br />
__stdcall璋冪敤綰﹀畾錛?br />1銆佷互“?”鏍囪瘑鍑芥暟鍚嶇殑寮濮嬶紝鍚庤窡鍑芥暟鍚嶏紱
2銆佸嚱鏁板悕鍚庨潰浠?#8220;@@YG”鏍囪瘑鍙傛暟琛ㄧ殑寮濮嬶紝鍚庤窡鍙傛暟琛紱
3銆佸弬鏁拌〃浠ヤ唬鍙瘋〃紺猴細
X--void 錛?br />D--char錛?br />E--unsigned char錛?br />F--short錛?br />H--int錛?br />I--unsigned int錛?br />J--long錛?br />K--unsigned long錛?br />M--float錛?br />N--double錛?br />_N--bool錛?br />....
PA--琛ㄧず鎸囬拡錛屽悗闈㈢殑浠e彿琛ㄦ槑鎸囬拡綾誨瀷錛屽鏋滅浉鍚岀被鍨嬬殑鎸囬拡榪炵畫鍑虹幇錛屼互“0”浠f浛錛屼竴涓?#8220;0”浠h〃涓嬈¢噸澶嶏紱
4銆佸弬鏁拌〃鐨勭涓欏逛負璇ュ嚱鏁扮殑榪斿洖鍊肩被鍨嬶紝鍏跺悗渚濇涓哄弬鏁扮殑鏁版嵁綾誨瀷,鎸囬拡鏍囪瘑鍦ㄥ叾鎵鎸囨暟鎹被鍨嬪墠錛?br />5銆佸弬鏁拌〃鍚庝互“@Z”鏍囪瘑鏁翠釜鍚嶅瓧鐨勭粨鏉燂紝濡傛灉璇ュ嚱鏁版棤鍙傛暟錛屽垯浠?#8220;Z”鏍囪瘑緇撴潫銆?br />
鍏舵牸寮忎負“?functionname@@YG*****@Z”鎴?#8220;?functionname@@YG*XZ”錛屼緥濡?br />int Test1錛坈har *var1,unsigned long錛?----“?Test1@@YGHPADK@Z”
void Test2錛堬級 -----“?Test2@@YGXXZ”

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

CB鍦ㄨ緭鍑哄嚱鏁板0鏄庢椂浣跨敤4縐嶄慨楗扮鍙?br />//__cdecl
cb鐨勯粯璁ゅ鹼紝瀹冧細鍦ㄨ緭鍑哄嚱鏁板悕鍓嶅姞_錛屽茍淇濈暀姝ゅ嚱鏁板悕涓嶅彉錛屽弬鏁版寜鐓т粠鍙沖埌宸︾殑欏哄簭渚濇浼犻掔粰鏍堬紝涔熷彲浠ュ啓鎴恄cdecl鍜宑decl褰㈠紡銆?br />//__fastcall
濂逛慨楗扮殑鍑芥暟鐨勫弬鏁板皢灝借偗鍛㈡劅鍦頒嬌鐢ㄥ瘎瀛樺櫒鏉ュ鐞嗭紝鍏跺嚱鏁板悕鍓嶅姞@錛屽弬鏁版寜鐓т粠宸﹀埌鍙崇殑欏哄簭鍘嬫爤錛?br />//__pascal
瀹冭鏄庣殑鍑芥暟鍚嶄嬌鐢≒ascal鏍煎紡鐨勫懡鍚嶇害瀹氥傝繖鏃跺嚱鏁板悕鍏ㄩ儴澶у啓銆傚弬鏁版寜鐓т粠宸﹀埌鍙崇殑欏哄簭鍘嬫爤錛?br />//__stdcall
浣跨敤鏍囧噯綰﹀畾鐨勫嚱鏁板悕銆傚嚱鏁板悕涓嶄細鏀瑰彉銆備嬌鐢╛_stdcall淇グ鏃躲傚弬鏁版寜鐓х敱鍙沖埌宸︾殑欏哄簭鍘嬫爤錛屼篃鍙互鏄痏stdcall錛?br />
VC++瀵瑰嚱鏁扮殑鐪佺己澹版槑鏄?__cedcl",灝嗗彧鑳借C/C++璋冪敤.





娉ㄦ剰錛?br />
1銆乢beginthread闇瑕乢_cdecl鐨勭嚎紼嬪嚱鏁板湴鍧錛宊beginthreadex鍜孋reateThread闇瑕乢_stdcall鐨勭嚎紼嬪嚱鏁板湴鍧銆?br />
2銆佷竴鑸琖IN32鐨勫嚱鏁伴兘鏄痏_stdcall銆傝屼笖鍦╓indef.h涓湁濡備笅鐨勫畾涔夛細

#define CALLBACK __stdcall

#define WINAPI銆 __stdcall

3銆乪xtern "C" _declspec(dllexport) int __cdecl Add(int a, int b);

   typedef int (__cdecl*FunPointer)(int a, int b);

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

#define EXTERN_C extern "C"

#else

#define EXTERN_C extern

#endif

#ifdef _cplusplus

extern "C"{

#endif

EXTERN_C int func(int a, int b);

#ifdef _cplusplus

}

#endif

5銆丮FC鎻愪緵浜嗕竴浜涘畯錛屽彲浠ヤ嬌鐢ˋFX_EXT_CLASS鏉ヤ唬鏇縚_declspec(DLLexport)錛屽茍淇グ綾誨悕錛屼粠鑰屽鍑虹被錛孉FX_API_EXPORT鏉ヤ慨楗板嚱鏁幫紝AFX_DATA_EXPORT鏉ヤ慨楗板彉閲?br />
AFX_CLASS_IMPORT錛歘_declspec(DLLexport)

AFX_API_IMPORT錛歘_declspec(DLLexport)

AFX_DATA_IMPORT錛歘_declspec(DLLexport)

AFX_CLASS_EXPORT錛歘_declspec(DLLexport)

AFX_API_EXPORT錛歘_declspec(DLLexport)

AFX_DATA_EXPORT錛歘_declspec(DLLexport)

AFX_EXT_CLASS錛?ifdef _AFXEXT

   AFX_CLASS_EXPORT

        #else

   AFX_CLASS_IMPORT

6銆丏LLMain璐熻矗鍒濆鍖?Initialization)鍜岀粨鏉?Termination)宸ヤ綔錛屾瘡褰撲竴涓柊鐨勮繘紼嬫垨鑰呰榪涚▼鐨勬柊鐨勭嚎紼嬭闂瓺LL鏃訛紝鎴栬呰闂瓺LL鐨勬瘡涓涓繘紼嬫垨鑰呯嚎紼嬩笉鍐嶄嬌鐢―LL鎴栬呯粨鏉熸椂錛岄兘浼氳皟鐢―LLMain銆備絾鏄紝浣跨敤TerminateProcess鎴?TerminateThread緇撴潫榪涚▼鎴栬呯嚎紼嬶紝涓嶄細璋冪敤DLLMain銆?br />
7銆佷竴涓狣LL鍦ㄥ唴瀛樹腑鍙湁涓涓疄渚?br />
DLL紼嬪簭鍜岃皟鐢ㄥ叾杈撳嚭鍑芥暟鐨勭▼搴忕殑鍏崇郴錛?br />
1)銆丏LL涓庤繘紼嬨佺嚎紼嬩箣闂寸殑鍏崇郴

DLL妯″潡琚槧灝勫埌璋冪敤瀹冪殑榪涚▼鐨勮櫄鎷熷湴鍧絀洪棿銆?br />
DLL浣跨敤鐨勫唴瀛樹粠璋冪敤榪涚▼鐨勮櫄鎷熷湴鍧絀洪棿鍒嗛厤錛屽彧鑳借璇ヨ繘紼嬬殑綰跨▼鎵璁塊棶銆?br />
DLL鐨勫彞鏌勫彲浠ヨ璋冪敤榪涚▼浣跨敤錛涜皟鐢ㄨ繘紼嬬殑鍙ユ焺鍙互琚獶LL浣跨敤銆?br />
DLLDLL鍙互鏈夎嚜宸辯殑鏁版嵁孌碉紝浣嗘病鏈夎嚜宸辯殑鍫嗘爤錛屼嬌鐢ㄨ皟鐢ㄨ繘紼嬬殑鏍堬紝涓庤皟鐢ㄥ畠鐨勫簲鐢ㄧ▼搴忕浉鍚岀殑鍫嗘爤妯″紡銆?br />
2)銆佸叧浜庡叡浜暟鎹

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


jackdong 2012-11-14 11:03 鍙戣〃璇勮
]]>
Visual Studio 2010鎺у埗鍙扮▼搴忔棤娉曡緭鍑轟腑鏂? http://m.shnenglu.com/jackdongy/archive/2012/11/03/194192.htmljackdongjackdongSat, 03 Nov 2012 03:09:00 GMThttp://m.shnenglu.com/jackdongy/archive/2012/11/03/194192.htmlhttp://m.shnenglu.com/jackdongy/comments/194192.htmlhttp://m.shnenglu.com/jackdongy/archive/2012/11/03/194192.html#Feedback0http://m.shnenglu.com/jackdongy/comments/commentRss/194192.htmlhttp://m.shnenglu.com/jackdongy/services/trackbacks/194192.html

Visual Studio 2008鎺у埗鍙扮▼搴忔棤娉曡緭鍑轟腑鏂囷紒錛熻В鍐蟲柟娉曞彧闇瑕佽緗竴涓嬪尯鍩熷嵆鍙傛病鏈夎緗尯鍩熷墠濡備笅鍥撅細

Visual Studio 2008鎺у埗鍙扮▼搴忔棤娉曡緭鍑轟腑鏂?- 鏈変綍涓嶅彲 - 涓嶈杈滆礋 鏈熸湜

鍖呭惈澶存枃浠訛細#include <locale.h>

鍑芥暟錛歘tsetlocale(LC_ALL, _T("chs"));

璁劇疆鍖哄煙鍚庡涓嬪浘錛?/span>

Visual Studio 2008鎺у埗鍙扮▼搴忔棤娉曡緭鍑轟腑鏂?- 鏈変綍涓嶅彲 - 涓嶈杈滆礋 鏈熸湜

鍙傝冿紝鎽樿嚜寰蔣MSDN

鎺у埗鍙頒腑鐨勭紪鐮佺▼搴忓憳鍦ㄥ鎺у埗鍙版垨“鏂囨湰妯″紡”搴旂敤紼嬪簭緙栫▼鏃跺彲鍚屾椂浣跨敤 Unicode 鍜?SBCS 鎴?DBCS 緙栫爜銆傚嚭浜庢壙琚柟闈㈢殑鑰冭檻錛岄潪 Unicode 鎺у埗鍙?I/O 鍑芥暟浣跨敤鎺у埗鍙頒唬鐮侀〉錛堥粯璁や負 OEM 浠g爜欏碉級銆俉indows 涓殑鎵鏈夊叾浠栭潪 Unicode 鍑芥暟閮戒嬌鐢?Windows 浠g爜欏點傝繖鎰忓懗鐫鍏朵粬鍑芥暟鍙兘鏃犳硶姝g‘鍦板鐞嗙敱鎺у埗鍙板嚱鏁拌繑鍥炵殑瀛楃涓詫紝鍙嶄箣浜︾劧銆備緥濡傦紝濡傛灉 FindFirstFileA 榪斿洖浜嗕竴涓寘鍚煇涓潪 ASCII 瀛楃鐨勫瓧絎︿覆錛學riteConsoleA 灝嗘棤娉曟甯稿湴鏄劇ず璇ュ瓧絎︿覆銆?/p>

瑕佷竴鐩磋窡韙摢浜涘嚱鏁伴渶瑕佸摢浜涚紪鐮佸茍姝g‘杞崲鏂囨湰鍙傛暟鐨勭紪鐮侀潪甯稿洶闅俱傚嚱鏁?SetFileApisToOEM銆丼etFileApisToANSI 鍜屽府鍔╃▼搴忓嚱鏁?AreFileApisANSI 鐨勫紩鍏ユ瀬澶у湴綆鍖栦簡姝ら」宸ヤ綔銆傚墠涓や釜鍑芥暟鍙帴鍙楁垨榪斿洖鏂囦歡鍚嶇О錛屽 KERNEL32.dll 瀵煎嚭鐨勯潪 Unicode 鍑芥暟鏈夋晥鏋溿傞【鍚嶆濅箟錛孲etFileApisToOEM 灝嗚繖浜涘嚱鏁拌緗負鎺ュ彈鎴栬繑鍥炰笌褰撳墠緋葷粺鍖哄煙璁劇疆瀵瑰簲鐨?OEM 瀛楃闆嗕腑鐨勬枃浠跺悕縐幫紝鑰?SetFileApisToANSI 鐢ㄤ簬涓鴻繖浜涘悕縐版仮澶嶉粯璁ゅ鹼紙Windows ANSI 緙栫爜錛夈備嬌鐢?AreFileApisANSI 鍙煡璇㈠埌褰撳墠閫夊畾鐨勭紪鐮併?/p>

鍒╃敤 SetFileApisToOEM 鍙交鏉懼湴瑙e喅 WindFirstFileA錛堟垨 GetCurrentDirectoryA錛屾垨 Win32 API 鐨勪換浣曟枃浠跺鐞嗗嚱鏁幫級鐨勭粨鏋滄棤娉曠洿鎺ヤ紶閫佺粰 WriteConsoleA 榪欎竴闂錛氬湪璋冪敤 SetFileApisToOEM 鍚庯紝WindFirstFileA 灝嗚繑鍥炰互 OEM錛堣屼笉鏄互 Windows ANSI 瀛楃闆嗭級緙栫爜鐨勬枃鏈備絾姝よВ鍐蟲柟妗堝茍闈炲簲瀵規(guī)墍鏈?Windows ANSI 涓?OEM 涓嶅吋瀹規(guī)儏鍐電殑涓囪兘鑹柟銆傝鎯蟲偍闇瑕佷粠鏌愪釜鏂囦歡澶勭悊鍑芥暟涓幏鍙栨枃鏈紝鐒跺悗灝嗗叾杈撳嚭鍒版帶鍒跺彴錛屾帴鐫鐢ㄥ叾浠栧嚱鏁幫紙涓嶅彈SetFileApisToOEM 鐨勫獎鍝嶏級澶勭悊璇ユ枃鏈傝繖縐嶇粷瀵圭悊鎯崇殑鎯呭喌闇瑕佹洿鏀圭紪鐮併傚惁鍒欙紝鎮(zhèn)ㄥ皢闇瑕佽皟鐢?SetFileApisToOEM 浠ヨ幏鍙栫敤浜庢帶鍒跺彴杈撳嚭鐨勬暟鎹紝鐒跺悗璋冪敤SetFileApisToANSI 寰楀埌鍚屼竴鏂囨湰錛堜嬌鐢ㄥ彟涓縐嶇紪鐮侊級榪涜鍐呴儴澶勭悊銆傚彟涓縐?SetFileApisToOEM 鏃犳硶鍙戞尌浣滅敤鐨勬儏鍐靛鍛戒護琛屽弬鏁扮殑澶勭悊錛氬綋鎮(zhèn)ㄧ殑搴旂敤紼嬪簭鐨勫叆鍙g偣涓?main錛堣屼笉鏄?wmain錛夋椂錛屽弬鏁板緇堜綔涓?Windows ANSI 瀛楃涓叉暟緇勮繘琛屼紶閫掋傝繖涓鍒囨樉鐒朵嬌緙栧啓闈?Unicode 鎺у埗鍙板簲鐢ㄧ▼搴忕殑紼嬪簭鍛樼殑宸ヤ綔鍙樺緱鏇村鏉備簡銆?/p>

鏇翠負澶嶆潅鐨勬槸涓烘帶鍒跺彴緙栧啓鐨?8 浣嶄唬鐮侀渶瑕佸鐞嗕袱縐嶄笉鍚岀被鍨嬬殑鍖哄煙璁劇疆銆傚湪緙栧啓浠g爜鏃訛紝鎮(zhèn)ㄥ彲浠ヤ嬌鐢?Win32 API 鎴?C 榪愯鏃跺簱鍑芥暟銆俉in32 API 鐨?ANSI 鍑芥暟鍋囧畾鏂囨湰鏄拡瀵瑰綋鍓嶆帶鍒跺彴浠g爜欏碉紙緋葷粺鍖哄煙璁劇疆榛樿瀹氫箟鐨勶級緙栫爜鐨勩係etConsoleCP 鍜?SetConsoleOutputCP 鍑芥暟鍙洿鏀硅繖浜涙搷浣滀腑浣跨敤鐨勪唬鐮侀〉銆傜敤鎴峰彲鍦ㄥ懡浠ゆ彁紺虹涓嬭皟鐢?chcp or mode con cp select= 鍛戒護錛岃繖灝嗕細鏇存敼褰撳墠鎺у埗鍙扮殑浠g爜欏點傝緗浐瀹氱殑鎺у埗鍙頒唬鐮侀〉鐨勫彟涓縐嶆柟娉曟槸鐢ㄩ粯璁ょ殑浠g爜欏甸泦鍒涘緩鎺у埗鍙板揩鎹鋒柟寮忥紙浠呴傜敤浜庝笢浜氭湰鍦板寲鐗堟湰鐨勬搷浣滅郴緇燂級銆?搴旂敤紼嬪簭搴旇兘澶熷搷搴旂敤鎴風殑鎿嶄綔銆?/p>

C 榪愯鏃跺簱錛圕RT 鍑芥暟錛変腑鍖哄垎鍖哄煙璁劇疆鍑芥暟鍙緷鐓?(_w)setlocale 璋冪敤鎵瀹氫箟鐨勮緗鐞嗘枃鏈傚鏋滀唬鐮佷腑鏈皟鐢?(_w)setlocale錛屽垯 CRT 鍑芥暟瀵硅繖浜涙搷浣滀嬌鐢?ANSI "C" 璇█涓嶅彉鍖哄煙璁劇疆錛岃繖鏍峰氨涓㈠け浜嗙壒瀹氫簬璇█鐨勫姛鑳姐?/p>

璇ュ嚱鏁扮殑澹版槑涓猴細

setlocale( int category, const char *locale)鎴?/p>

_wsetlocale( int category, const wchar_t *locale)鍏朵腑 "category" 鐢ㄤ簬瀹氫箟鍙楀獎鍝嶇殑鐗瑰畾浜庡尯鍩熺殑璁劇疆錛堝鏋滄寚瀹氫簡 LC_ALL錛屽垯鍏ㄩ儴瀹氫箟錛夈傚彲鍙樺尯鍩熻緗彲浠ユ槸鏄懼紡鍖哄煙璁劇疆鍚嶇О鎴栦笅闈㈢殑鏌愪竴欏癸細

".OCP" 鎸囦笌褰撳墠鐢ㄦ埛鍖哄煙璁劇疆瀵瑰簲鐨?OEM 浠g爜欏?br style="line-height: normal" />".ACP" 鎴?"" 鎸囦笌褰撳墠鐢ㄦ埛鍖哄煙璁劇疆瀵瑰簲鐨?Windows 浠g爜欏?br style="line-height: normal" />".OCP" 鍜?".ACP" 鍙傛暟濮嬬粓寮曠敤鐢ㄦ埛鍖哄煙璁劇疆錛堣屼笉鏄郴緇熷尯鍩熻緗級鐨勮緗箋傚洜姝や笉鑳藉皢瀹冧滑鐢ㄤ簬璁劇疆 LC_CTYPE銆傛 "category" 瀹氫箟浜?Unicode 鍚?8 浣嶈漿鎹㈢殑瑙勫垯鍜屽叾浠栨枃鏈鐞嗙▼搴忥紝蹇呴』閬靛驚鎺у埗鍙扮殑璁劇疆錛堝彲浣跨敤 GetConsoleCP 鍜?GetConsoleOutputCP 璁塊棶錛夈?/p>瀵規(guī)帶鍒跺彴搴旂敤紼嬪簭鏈浣崇殑闀挎湡瑙e喅鏂規(guī)鏄嬌鐢?Unicode錛屽洜涓?Unicode 鎺ュ彛鏄拡瀵?Win32 API 鍜?C 榪愯鏃跺簱瀹氫箟鐨勩備粖鍚庣殑緙栫▼妯″瀷浠嶉渶瑕佹?zhèn)ㄦ槕旨忓湴璁揪|尯鍩熻緗紝浣嗚嚦灝戝彲鑲畾閫氳繃 Win32 鍜?CRT 鐪嬪埌鐨勬枃鏈笉鍐嶉渶瑕佽繘琛屼唬鐮佽漿鎹€?/span>

jackdong 2012-11-03 11:09 鍙戣〃璇勮
]]>
C/C++涓浣曠簿紜鏃?http://m.shnenglu.com/jackdongy/archive/2012/10/21/193601.htmljackdongjackdongSun, 21 Oct 2012 04:45:00 GMThttp://m.shnenglu.com/jackdongy/archive/2012/10/21/193601.htmlhttp://m.shnenglu.com/jackdongy/comments/193601.htmlhttp://m.shnenglu.com/jackdongy/archive/2012/10/21/193601.html#Feedback0http://m.shnenglu.com/jackdongy/comments/commentRss/193601.htmlhttp://m.shnenglu.com/jackdongy/services/trackbacks/193601.htmlhttp://blog.csdn.net/bendanban/article/details/7673607
緇欑▼搴忚鏃跺浜庣▼搴忓憳鏉ヨ瀹炲湪鏄お閲嶈浜嗭紝鍦╳indows涓婄殑閭d釜clock錛堬級瀹炲湪鏄笉澶熺簿紜紝綺懼害鍙湁10ms錛岀湡璁╀漢闅捐繃銆傜爺絀朵簡涓媤indows涓嬩嬌鐢–銆丆++璁℃椂鐨勫嚱鏁幫紝緇欏ぇ瀹跺垎浜笅銆?

涓昏灝辨槸涓や釜鍑芥暟鐨勪嬌鐢ㄣ傛垜鍏堟妸涓孌靛彲浠ヨ繍琛岀殑浠g爜璐村嚭鏉ワ紝鐒跺悗璁茶榪欎袱涓嚱鏁般?/p>

#include <windows.h>
#include 
<stdio.h>
int main(int argc, char **argv)
{
    LARGE_INTEGER freq;
    LARGE_INTEGER start_t, stop_t;
    
double exe_time;
    QueryPerformanceFrequency(
&freq);
    fprintf(stdout, 
"The frequency of your pc is %d.\n", freq.QuadPart);
    QueryPerformanceCounter(
&start_t);
    Sleep(
1000);
    QueryPerformanceCounter(
&stop_t);
    exe_time 
= 1e3*(stop_t.QuadPart-start_t.QuadPart)/freq.QuadPart;
    fprintf(stdout, 
"Your program executed time is %fms.\n", exe_time); 
    getchar();
    
return 0;
}

 

1銆丩ARGE_INTEGER鍦ㄥ井杞殑緙栬瘧鍣ㄤ腑瀹為檯涓婃槸涓涓猽nion錛屽畠鐨勫畾涔夊涓嬶細
typedef union _LARGE_INTEGER
{  
    
struct
 
    
{    
        DWORD LowPart;   
        LONG HighPart;  
    }

    
struct
 
    
{   
        DWORD LowPart;    
        LONG HighPart;  
    }
 u;  
    LONGLONG QuadPart;
}
 LARGE_INTEGER,  *PLARGE_INTEGER;


濡傛灉浣犱嬌鐢ㄧ殑緙栬瘧鍣ㄦ敮鎸?4浣嶆暣鏁幫紝閭d箞鍙互浣跨敤QuadPart鏉ュ紩鐢ㄥ彉閲忕殑鍊箋傚鏋滀綘鐨勭紪璇戝櫒涓嶆敮鎸?4浣嶆暣鏁幫紝閭d箞鍙互浣跨敤LowPart鍜孒ighPart鏉ュ紩鐢?4浣嶆暣鏁扮殑浣?2浣嶅拰楂?2浣嶃?/p>

2銆丵ueryPerformanceFrequncy(LARGE_INTEGER *freq)

瀹冪敤浜庤幏寰椾綘鐨勬満鍣ㄤ竴縐掗挓鎵ц澶氬皯嬈★紝灝辨槸浣犵殑鏃墮挓鍛ㄦ湡銆?/p>

3銆丵ueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)

瀹冭幏寰楃殑鏄疌PU浠庡紑鏈轟互鏉ユ墽琛岀殑鏃墮挓鍛ㄦ湡鏁般?/p>

 

O鍟︺傘傘傘傚ソ濂界敤鐢ㄥ畠鍚с?/p>






jackdong 2012-10-21 12:45 鍙戣〃璇勮
]]>
浣跨敤緙栬瘧鍣ㄦ潵浣跨敤瀹忓彉閲?http://m.shnenglu.com/jackdongy/archive/2012/10/21/193599.htmljackdongjackdongSun, 21 Oct 2012 04:41:00 GMThttp://m.shnenglu.com/jackdongy/archive/2012/10/21/193599.htmlhttp://m.shnenglu.com/jackdongy/comments/193599.htmlhttp://m.shnenglu.com/jackdongy/archive/2012/10/21/193599.html#Feedback0http://m.shnenglu.com/jackdongy/comments/commentRss/193599.htmlhttp://m.shnenglu.com/jackdongy/services/trackbacks/193599.htmlhttp://blog.csdn.net/bendanban/article/details/7753995
鍒氬浜嗕竴鎷涳紝鍙互浣跨敤緙栬瘧鍣ㄧ殑-D閫夐」鏉ュ畾涔夌▼搴忎腑浣跨敤鐨勫畯銆?
#include <stdio.h>
int main(int argc, char **argv)
{
    #ifdef MY_MAC
    printf(
"Hello -D.\n");
    
#else 
    printf(
"MY_MAC was not defined.\n");
    
#endif
    
return 0;
}
涓婇潰鐨勪唬鐮佷腑浣跨敤浜哅Y_MAC瀹忥紝

 

銆愩?g++ -DMY_MAC -o dtest dtest.c

鎵ц緇撴灉錛?/p>

銆愩? ./dtest 
Hello 
-D.
銆愩?

鏃犳帀-D閫夐」錛岄噸鏂扮紪璇戯紝鎵ц緇撴灉錛?

銆愩? g++ ./dtest.c -o dtest
銆愩? .
/dtest 
MY_MAC was not defined.

鎴戜滑鍙互鍒╃敤緙栬瘧鍣ㄨ繖涓夐」鏉ヨ皟璇曟垜浠殑紼嬪簭濂ャ?

 

濡傛灉鎴戠殑瀹忎唬琛ㄤ竴涓父閲忔庝箞鍔炲憿錛燂紵

鐪嬬湅淇敼鍚庣殑浠g爜錛?/p>

 

#include <stdio.h>
int main(int argc, char **argv)
{
    #ifdef MY_MAC
    printf(
"Hello -D. %d\n", MY_MAC);
    
#else 
    printf(
"MY_MAC was not defined.\n");
    
#endif
    
return 0;
}



鎴戣緭鍑轟簡瀹忎唬琛ㄧ殑鍊箋?

 

鍦ㄧ粓绔墽琛屼竴涓嬪懡浠わ細

 

銆愩? g++ -DMY_MAC=5 ./dtest.c -o dtest
銆愩? .
/dtest 
Hello 
-D. 5
銆愩?

濡傛灉紼嬪簭涓湁澶氫釜瀹忓彲浠ヨ繖鏍風紪璇?/p>

銆愩?g++ -DMAC1=5 -DMAC2=6 soucefile.c

^_^錛岋紝寰堝叴濂嬫槸鍚э紵錛熻繖鏍鋒垜浠氨涓嶇敤鍦ㄤ唬鐮侀噷淇敼瀹忓彉閲忎簡銆傘?br />





jackdong 2012-10-21 12:41 鍙戣〃璇勮
]]>
C++涓轟粈涔堜笉寤鴻浣跨敤malloc,calloc,realloc鏉ュ垎閰嶅唴瀛? http://m.shnenglu.com/jackdongy/archive/2012/10/19/193553.htmljackdongjackdongFri, 19 Oct 2012 14:57:00 GMThttp://m.shnenglu.com/jackdongy/archive/2012/10/19/193553.htmlhttp://m.shnenglu.com/jackdongy/comments/193553.htmlhttp://m.shnenglu.com/jackdongy/archive/2012/10/19/193553.html#Feedback0http://m.shnenglu.com/jackdongy/comments/commentRss/193553.htmlhttp://m.shnenglu.com/jackdongy/services/trackbacks/193553.htmlhttp://blog.csdn.net/eclipser1987/article/details/8024555

涓轟粈涔圕++涓笉寤鴻浣跨敤malloc calloc realloc絳塁璇█鍑芥暟?鍥犱負:榪欐牱鍒嗛厤鐨勭┖闂?榪斿洖鐨勬寚閽堥渶瑕侀氳繃free鏉ラ噴鏀?浣唂ree閲婃斁絀洪棿涓嶅悓浜巇elete,free涓嶄細鎵ц鏋愭瀯鍑芥暟!

/* 
 * File:   main.cpp
 * Author: Vicky.H
 * Email:  eclipser@163.com
 
*/

#include 
<iostream>
#include 
<cstdlib>
#include 
<memory>

class A {
public:

    A() 
{
        std::cout 
<< "create A" << std::endl;
    }


    A(
const A& o) {
        std::cout 
<< "copy A" << std::endl;
    }


    
~A() {
        std::cout 
<< "delete A" << std::endl;
    }

}
;

/*
 * 
 
*/

int main(void{

    
char* buf1 = (char*) malloc(10); // 
    char* buf2 = (char*) calloc(110); // 鏁堟灉铏界劧涓庝笂闈竴鏍?涓嶅悓鐨勬槸,calloc浼氬皢絀洪棿鍒濆鍖栦負0.

    free(buf1);
    free(buf2);

    std::cout 
<< "---------------------------" << std::endl;

    
// 涓轟粈涔圕++涓笉寤鴻浣跨敤malloc calloc realloc絳塁璇█鍑芥暟?鍥犱負:榪欐牱鍒嗛厤鐨勭┖闂?榪斿洖鐨勬寚閽堥渶瑕侀氳繃free鏉ラ噴鏀?浣唂ree閲婃斁絀洪棿涓嶅悓浜巇elete,free涓嶄細鎵ц鏋愭瀯鍑芥暟!

    A
* ap = (A*) malloc(sizeof (class A) * 10);
    std::uninitialized_fill_n(ap, 
10, A());
    free(ap); 
// 璋冪敤1嬈reate A ,1嬈elete A 10嬈opy A
    return 0;
}


 

---------------------------
create A
copy A
copy A
copy A
copy A
copy A
copy A
copy A
copy A
copy A
copy A
delete A

铏界劧瀹炰緥紼嬪簭,瀵圭┖闂寸殑鍒嗛厤閲婃斁娌℃湁浠諱綍閿欒,浣嗗湪鏌愪簺鎯呭喌,姣斿A綾葷殑鏋愭瀯浼撮殢鐫鏌愪簺鐗規(guī)畩澶勭悊,灝嗗鑷寸▼搴忓紓甯?

 



jackdong 2012-10-19 22:57 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利视频一区| 欧美性猛交一区二区三区精品| 欧美在线免费观看| 亚洲国产专区校园欧美| 欧美承认网站| 久久精品欧洲| 久久久综合香蕉尹人综合网| 欧美一级久久久| 久久久久国产成人精品亚洲午夜| 久久九九国产| 免费日韩视频| 日韩视频一区| 亚洲欧美电影院| 久久久亚洲午夜电影| 久久久久免费| 欧美私人网站| 激情久久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲免费成人av| 香港成人在线视频| 久久国产精品99精品国产| 国产欧美日韩三区| 亚洲国内精品在线| 午夜激情综合网| 欧美成人免费大片| 亚洲一区二区三区免费在线观看| 久久久久欧美| 欧美三级电影网| 国户精品久久久久久久久久久不卡 | 久久五月激情| 91久久国产综合久久91精品网站| 9久草视频在线视频精品| 久久精品国产精品亚洲| 欧美日韩亚洲一区二| 国产自产在线视频一区| 一本高清dvd不卡在线观看| 久久婷婷国产综合国色天香| 亚洲免费精彩视频| 免费在线观看日韩欧美| 国产日韩精品视频一区| 一区二区三区不卡视频在线观看| 麻豆成人在线播放| 亚洲欧美日韩综合一区| 欧美日韩国产在线播放| 亚洲国产精品123| 久久久久国产一区二区三区四区 | 欧美在线视频免费播放| 亚洲国产精品成人| 久久中文欧美| 影音先锋成人资源站| 欧美专区在线| 亚洲欧美激情诱惑| 国产精品v欧美精品∨日韩| 亚洲国产一区二区a毛片| 毛片一区二区| 久久综合网色—综合色88| 亚洲一级黄色片| 欧美激情一区二区三区全黄 | 亚洲主播在线| 国产精品久久久久国产精品日日| 一二三区精品| 一区二区三区你懂的| 欧美日韩国产在线播放网站| 日韩亚洲欧美精品| 亚洲日本久久| 欧美日韩视频在线第一区| 亚洲视频免费观看| 亚洲午夜电影在线观看| 国产欧美一区二区色老头 | 亚洲精品123区| 欧美精品一区二区三| 夜夜嗨av一区二区三区免费区| 亚洲人成高清| 国产精品久久久久久久久果冻传媒 | 91久久精品一区二区别| 欧美激情一区二区三级高清视频| 欧美a级片网站| 亚洲一区不卡| 翔田千里一区二区| 伊人久久婷婷色综合98网| 欧美a级片网| 欧美激情一二三区| 欧美一区二区在线播放| 久久美女性网| 一区二区三区福利| 亚洲欧美中文日韩v在线观看| 国产欧美日韩精品专区| 美女在线一区二区| 欧美理论大片| 欧美一区二区三区视频免费播放| 欧美在线播放| 夜夜嗨av一区二区三区四区 | 性伦欧美刺激片在线观看| 在线观看av不卡| 一本久道综合久久精品| 狠狠入ady亚洲精品| 亚洲伦理在线观看| 国产亚洲第一区| 亚洲国产婷婷综合在线精品| 国产精品美女一区二区在线观看| 麻豆精品精华液| 国产精品红桃| 欧美黄色免费网站| 国产人久久人人人人爽| 亚洲国产精品精华液2区45| 国产精品日韩| 亚洲精品国精品久久99热| 精品成人一区| 亚洲欧美999| 欧美福利电影网| 久久久视频精品| 国产精品wwwwww| 91久久久久久| 亚洲国产精品99久久久久久久久| 亚洲免费视频一区二区| 一区二区三区成人| 免费观看久久久4p| 久久阴道视频| 国产欧美日韩免费看aⅴ视频| 亚洲日本中文字幕免费在线不卡| 国内精品美女av在线播放| 亚洲欧美成人一区二区在线电影 | 一本大道久久精品懂色aⅴ| 久久蜜桃精品| 久久综合图片| 国产一区二区三区久久| 亚洲一区二区三区高清| 亚洲色无码播放| 欧美久久久久久久久| 欧美激情亚洲自拍| 亚洲激情在线观看| 久久一区二区精品| 久久久久久网址| 国产午夜精品一区二区三区欧美 | 在线观看亚洲| 久久久精品日韩欧美| 久久久久免费| 激情久久久久久久| 久久手机精品视频| 欧美国产一区视频在线观看 | 亚洲人成免费| 欧美sm视频| 亚洲日本va午夜在线电影| 91久久精品美女| 欧美美女bbbb| 亚洲理论电影网| 亚洲天堂成人在线观看| 欧美亚洲不卡| 欧美一区二区三区免费看| 久久精品道一区二区三区| 国产午夜精品视频| 久久精品国产亚洲5555| 免费欧美视频| a91a精品视频在线观看| 欧美午夜剧场| 午夜精品理论片| 欧美成人一区在线| 99精品视频免费在线观看| 国产精品mm| 久久精品国产第一区二区三区| 久久性天堂网| 亚洲欧洲在线视频| 欧美日韩中文在线| 欧美一级片一区| 欧美激情在线观看| 亚洲天堂网站在线观看视频| 国产美女精品视频免费观看| 亚洲大胆人体在线| 一本到12不卡视频在线dvd| 国产精品日韩一区二区| 久久午夜羞羞影院免费观看| 亚洲精品视频中文字幕| 久久一区二区三区超碰国产精品| 亚洲黄色有码视频| 国产精品地址| 久久亚洲图片| 亚洲一二三级电影| 欧美3dxxxxhd| 亚洲欧美日韩一区在线| 在线免费高清一区二区三区| 欧美日本在线一区| 欧美影院午夜播放| 亚洲日本欧美天堂| 久久在线免费| 亚洲欧美亚洲| 亚洲国产精品一区| 国产欧美精品| 欧美日韩精品一区视频| 久久久亚洲综合| 亚洲深夜福利在线| 亚洲国产片色| 久久先锋资源| 欧美有码在线观看视频| 亚洲精品在线视频观看| 国产一区二区高清视频| 国产精品啊啊啊| 欧美日韩和欧美的一区二区| 久久在线91| 午夜欧美不卡精品aaaaa| 日韩视频免费在线|