锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鐜頒唬璁$畻鏈轟腑鍐呭瓨絀洪棿閮芥槸鎸夌収byte鍒掑垎鐨勶紝浠庣悊璁轟笂璁蹭技涔庡浠諱綍綾誨瀷鐨勫彉閲忕殑璁塊棶鍙互浠庝換浣曞湴鍧寮濮嬶紝浣嗗疄闄呮儏鍐墊槸鍦ㄨ闂壒瀹氱被鍨嬪彉閲忕殑鏃跺欑粡甯稿湪鐗?瀹氱殑鍐呭瓨鍦板潃璁塊棶錛岃繖灝遍渶瑕佸悇縐嶇被鍨嬫暟鎹寜鐓т竴瀹氱殑瑙勫垯鍦ㄧ┖闂翠笂鎺掑垪錛岃屼笉鏄『搴忕殑涓涓帴涓涓殑鎺掓斁錛岃繖灝辨槸瀵歸綈銆?br> 瀵歸綈鐨勪綔鐢ㄥ拰鍘熷洜錛氬悇涓‖浠跺鉤鍙板瀛樺偍絀洪棿鐨勫鐞嗕笂鏈夊緢澶х殑涓嶅悓銆備竴浜涘鉤鍙板鏌愪簺鐗瑰畾綾誨瀷鐨勬暟鎹彧鑳戒粠鏌愪簺鐗瑰畾鍦板潃寮濮嬪瓨鍙栥傛瘮濡傛湁浜涙灦鏋勭殑CPU鍦ㄨ闂?涓涓病鏈夎繘琛屽榻愮殑鍙橀噺鐨勬椂鍊欎細鍙戠敓閿欒,閭d箞鍦ㄨ繖縐嶆灦鏋勪笅緙栫▼蹇呴』淇濊瘉瀛楄妭瀵歸綈.鍏朵粬騫沖彴鍙兘娌℃湁榪欑鎯呭喌錛屼絾鏄渶甯歌鐨勬槸濡傛灉涓嶆寜鐓ч傚悎鍏跺鉤鍙拌姹傚 鏁版嵁瀛樻斁榪涜瀵歸綈錛屼細鍦ㄥ瓨鍙栨晥鐜囦笂甯︽潵鎹熷け銆傛瘮濡傛湁浜涘鉤鍙版瘡嬈¤閮芥槸浠庡伓鍦板潃寮濮嬶紝濡傛灉涓涓猧nt鍨嬶紙鍋囪涓?2浣嶇郴緇燂級濡傛灉瀛樻斁鍦ㄥ伓鍦板潃寮濮嬬殑鍦版柟錛岄偅 涔堜竴涓鍛ㄦ湡灝卞彲浠ヨ鍑鴻繖32bit錛岃屽鏋滃瓨鏀懼湪濂囧湴鍧寮濮嬬殑鍦版柟錛屽氨闇瑕?涓鍛ㄦ湡錛屽茍瀵逛袱嬈¤鍑虹殑緇撴灉鐨勯珮浣庡瓧鑺傝繘琛屾嫾鍑戞墠鑳藉緱鍒拌32bit鏁?鎹傛樉鐒跺湪璇誨彇鏁堢巼涓婁笅闄嶅緢澶氥?/p>
鍏堣鎴戜滑鐪嬪嚑涓緥瀛愬惂(32bit,x86鐜,gcc緙栬瘧鍣?: 緇撴瀯浣揂涓寘鍚簡4瀛楄妭闀垮害鐨刬nt涓涓紝1瀛楄妭闀垮害鐨刢har涓涓拰2瀛楄妭闀垮害鐨剆hort鍨嬫暟鎹竴涓?B涔熶竴鏍?鎸夌悊璇碅,B澶у皬搴旇閮芥槸7瀛楄妭銆?br>涔嬫墍浠ュ嚭鐜頒笂闈㈢殑緇撴灉鏄洜涓虹紪璇戝櫒瑕佸鏁版嵁鎴愬憳鍦ㄧ┖闂翠笂榪涜瀵歸綈銆備笂闈㈡槸鎸夌収緙栬瘧鍣ㄧ殑榛樿璁劇疆榪涜瀵歸綈鐨勭粨鏋?閭d箞鎴戜滑鏄笉鏄彲浠ユ敼鍙樼紪璇戝櫒鐨勮繖縐嶉粯璁ゅ榻愯緗憿,褰撶劧鍙互.渚嬪: 鍏堣鎴戜滑鐪嬪洓涓噸瑕佺殑鍩烘湰姒傚康錛?br>1.鏁版嵁綾誨瀷鑷韓鐨勫榻愬鹼細 1.鍦╒C IDE涓紝鍙互榪欐牱淇敼錛歔Project]|[Settings],c/c++閫夐」鍗ategory鐨凜ode Generation閫夐」鐨凷truct Member Alignment涓慨鏀癸紝榛樿鏄?瀛楄妭銆?br>2.鍦ㄧ紪鐮佹椂錛屽彲浠ヨ繖鏍峰姩鎬佷慨鏀癸細#pragma pack .娉ㄦ剰:鏄痯ragma鑰屼笉鏄痯rogma. 浠g爜涓叧浜庡榻愮殑闅愭偅錛屽緢澶氭槸闅愬紡鐨勩傛瘮濡傚湪寮哄埗綾誨瀷杞崲鐨勬椂鍊欍備緥濡傦細 p=&i; 濡傛灉鍑虹幇瀵歸綈鎴栬呰祴鍊奸棶棰橀鍏堟煡鐪?br>1. 緙栬瘧鍣ㄧ殑big little绔緗?br>2. 鐪嬭繖縐嶄綋緋繪湰韜槸鍚︽敮鎸侀潪瀵歸綈璁塊棶 鍏?鐩稿叧鏂囩珷:杞嚜http://blog.csdn.net/goodluckyxl/archive/2005/10/17/506827.aspx ARM涓嬬殑瀵歸綈澶勭悊 3.13 type qulifiers 鏈夐儴鍒嗘憳鑷狝RM緙栬瘧鍣ㄦ枃妗e榻愰儴鍒?/p>
瀵歸綈鐨勪嬌鐢? p = (char*)&a; /* 鍙戠幇鑷繁鐨勫緹庤涓嶅拫鐨勶紝淇鴻寰楁紓浜殑浜哄瑙夊緱涓嶆紓浜傝繕鏄収鐫澶у瑕佹眰鐨勭敾涓涓?/span> 涓昏瑙e喅鐨勯棶棰樻槸錛岃繖嬈¤鍒楅兘鐢ㄥ畯琛ㄧず錛岃繖鏍峰彲浠ヤ慨鏀硅鍒楋紝紿楀彛澶у皬涔熷姩鎬佹敼鍙樸?/span> 鍙﹀闀挎潯鏃嬭漿鍙樻垚Z鍨嬮棶棰樹篃瑙e喅錛屼富瑕佹槸鍙栨ā鐨勬椂鍊欑粫鍥炲幓浜嗐?/span> 鍏朵腑鏈閲嶈鐨勮綆楁槸瑙e喅浜嗗埛鏂伴棯鐑侀棶棰橈紝灝界HAM2008鎸囩偣榪囷紝濮嬬粓娌″仛鎴愶紝榪欐vczh璇翠簡涓鍙ヨ瘽灝辯偣閱掍簡鎴戙傛牴鏈笉搴旇浣跨敤InvalidateRect鍑芥暟錛岀洿鎺ョ敾錛岀劧鍚庣敤緙撳啿DC灝卞彲浠ヤ簡銆?br> 濡傛璁劇疆鍚勪釜瀹忓悗灝卞彲浠ヤ嬌鐢ㄤ簡 濡傛灉鏄?/span>GTK鐜鍒欓渶瑕佸彟澶栬緗袱涓彉閲忥紝涓涓槸鍒嗛厤璋冭壊鏉匡紝涓涓槸鎸囨槑闀垮害銆傝嫢涓?/span>win32鐜灝辨棤闇榪欎袱涓彉閲忎簡銆傝鏉′歡緙栬瘧鐢ㄤ簬鐢熸垚涓嶅悓騫沖彴涓嬬殑浜у搧銆傚嵆緙栬瘧浠g爜鐨勪笉鍚岄儴鍒嗭紝榪欏氨鏄澶勭悊鐨勪竴涓姛鑳姐?/span> 浜?Typedef鐨勪嬌鐢?br> 涓?鍏充簬棰滆壊鐨勭鐞嗙殑鍑犱釜綾?/strong> ColourDesired 棰滆壊浣跨敤涓涓暱鏁村艦錛屼篃灝辨槸鐢?/span>32浣嶆潵鎻忚堪涓縐嶉鑹層?/span> 涓昏鐪嬩袱涓?/span>Set鍑芥暟鐨勫疄鐜幫紝絎竴涓槸浠庢寚瀹氱殑涓夊熀鑹茬殑鍊兼潵鏋勯犱竴縐嶉鑹層?br> 浠庝唬鐮佺湅鍑轟粠楂樺埌浣庝緷嬈℃槸bgr錛岃繖涓『搴忔濂芥槸RGB妯″瀷銆傞偅涔堟瘡涓煎崰8浣嶃傛誨叡鏄?/span>24浣嶏紝鏈楂樼殑8浣嶆垜鎯蟲槸alpha閫氶亾鍚с?/span> 鍙︿竴縐嶆槸浠庝竴涓暟緇勬瀯閫狅紝鐩墠鐚滄祴鏄?/span>xpm鏍煎紡鎻忚堪鐨勬暟緇勭殑閮ㄥ垎銆備粬棣栧厛鏈変釜鎻愬彇鍗佸叚榪涘埗鐪熷肩殑鍑芥暟浣滀負杈呭姪錛屾瘮杈冪畝鍗曘?/span> 鍐嶇湅涓涓浘鏍囩殑鏁扮粍 鍙互鐪嬪埌璇ュ瓧絎﹀浘鍍忕敱涓夌絎﹀彿緇勬垚錛岀劧鍚庝笁縐嶇鍙風殑棰滆壊鏄劇劧鏄繖涔堟弿榪扮殑" c None", ". c #000000", "+ c #808080", Set鍑芥暟閬囧埌涓涓?/span>#鍙峰氨寮濮嬫彁鍙栬綆楅鑹?/span>rgb鍊間簡銆傞偅涔堟暣涓浘鍍忓簲璇ユ槸閫氳繃榪欎釜Set鍑芥暟鐨勫嚑嬈¤皟鐢ㄨ繘琛岀殑銆?/span>ColourAllocated綾葷畝鍗曠殑鎶婁笂涓涓被姹傜殑鍊艱祴緇欎粬鐨勬垚鍛樸傚叿浣撲綔鐢ㄨ繕涓嶆竻妤氥?/span>ColourPair綾誨寘鍚互涓婁袱涓被鐨勫璞★紝榪欎簺鍙兘鏄璁′笂鐨勫師鍥犮傚洜涓哄叿浣撶殑鎿嶄綔閮芥槸ColourDesired瀹屾垚銆?/span>浜?瀛楄妭瀵歸綈瀵圭▼搴忕殑褰卞搷:
璁劇粨鏋勪綋濡備笅瀹氫箟錛?br>struct A
{
int a;
char b;
short c;
};
struct B
{
char b;
int a;
short c;
};
鐜板湪宸茬煡32浣嶆満鍣ㄤ笂鍚勭鏁版嵁綾誨瀷鐨勯暱搴﹀涓?
char:1(鏈夌鍙鋒棤絎﹀彿鍚?
short:2(鏈夌鍙鋒棤絎﹀彿鍚?
int:4(鏈夌鍙鋒棤絎﹀彿鍚?
long:4(鏈夌鍙鋒棤絎﹀彿鍚?
float:4 double:8
閭d箞涓婇潰涓や釜緇撴瀯澶у皬濡備綍鍛?
緇撴灉鏄?
sizeof(strcut A)鍊間負8
sizeof(struct B)鐨勫煎嵈鏄?2
#pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C
{
char b;
int a;
short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct C)鍊兼槸8銆?br>淇敼瀵歸綈鍊間負1錛?br>#pragma pack (1) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct D
{
char b;
int a;
short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct D)鍊間負7銆?br>鍚庨潰鎴戜滑鍐嶈瑙?pragma pack()鐨勪綔鐢?涓?緙栬瘧鍣ㄦ槸鎸夌収浠涔堟牱鐨勫師鍒欒繘琛屽榻愮殑?
瀵逛簬char鍨嬫暟鎹紝鍏惰嚜韜榻愬間負1錛屽浜巗hort鍨嬩負2錛屽浜巌nt,float,double綾誨瀷錛屽叾鑷韓瀵歸綈鍊間負4錛屽崟浣嶅瓧鑺傘?br>2.緇撴瀯浣撴垨鑰呯被鐨勮嚜韜榻愬鹼細鍏舵垚鍛樹腑鑷韓瀵歸綈鍊兼渶澶х殑閭d釜鍊箋?br>3.鎸囧畾瀵歸綈鍊?/font>錛?pragma pack (value)鏃剁殑鎸囧畾瀵歸綈鍊紇alue銆?br>4.鏁版嵁鎴愬憳銆佺粨鏋勪綋鍜岀被鐨勬湁鏁堝榻愬鹼細鑷韓瀵歸綈鍊煎拰鎸囧畾瀵歸綈鍊間腑灝忕殑閭d釜鍊箋?br>鏈?浜嗚繖浜涘鹼紝鎴戜滑灝卞彲浠ュ緢鏂逛究鐨勬潵璁ㄨ鍏蜂綋鏁版嵁緇撴瀯鐨勬垚鍛樺拰鍏惰嚜韜殑瀵歸綈鏂瑰紡銆傛湁鏁堝榻愬糔鏄渶緇堢敤鏉ュ喅瀹氭暟鎹瓨鏀懼湴鍧鏂瑰紡鐨勫鹼紝鏈閲嶈銆傛湁鏁堝榻怤錛屽氨鏄?琛ㄧず“瀵歸綈鍦∟涓?#8221;錛屼篃灝辨槸璇磋鏁版嵁鐨?瀛樻斁璧峰鍦板潃%N=0".鑰屾暟鎹粨鏋勪腑鐨勬暟鎹彉閲忛兘鏄寜瀹氫箟鐨勫厛鍚庨『搴忔潵鎺掓斁鐨勩傜涓涓暟鎹彉閲忕殑璧峰鍦板潃灝辨槸鏁?鎹粨鏋勭殑璧峰鍦板潃銆傜粨鏋勪綋鐨勬垚鍛樺彉閲忚瀵歸綈鎺掓斁錛岀粨鏋勪綋鏈韓涔熻鏍規嵁鑷韓鐨勬湁鏁堝榻愬煎渾鏁?灝辨槸緇撴瀯浣撴垚鍛樺彉閲忓崰鐢ㄦ婚暱搴﹂渶瑕佹槸瀵圭粨鏋勪綋鏈夋晥瀵歸綈鍊肩殑鏁存暟 鍊嶏紝緇撳悎涓嬮潰渚嬪瓙鐞嗚В)銆傝繖鏍峰氨涓嶈兘鐞嗚В涓婇潰鐨勫嚑涓緥瀛愮殑鍊間簡銆?br>渚嬪瓙鍒嗘瀽錛?br>鍒嗘瀽渚嬪瓙B錛?br>struct B
{
char b;
int a;
short c;
};
鍋?璁綛浠庡湴鍧絀洪棿0x0000寮濮嬫帓鏀俱傝渚嬪瓙涓病鏈夊畾涔夋寚瀹氬榻愬鹼紝鍦ㄧ瑪鑰呯幆澧冧笅錛岃鍊奸粯璁や負4銆傜涓涓垚鍛樺彉閲廱鐨勮嚜韜榻愬兼槸1錛屾瘮鎸囧畾鎴栬呴粯璁ゆ寚瀹?瀵歸綈鍊?灝忥紝鎵浠ュ叾鏈夋晥瀵歸綈鍊間負1錛屾墍浠ュ叾瀛樻斁鍦板潃0x0000絎﹀悎0x0000%1=0.絎簩涓垚鍛樺彉閲廰錛屽叾鑷韓瀵歸綈鍊間負4錛屾墍浠ユ湁鏁堝榻愬間篃涓?錛?鎵浠ュ彧鑳藉瓨鏀懼湪璧峰鍦板潃涓?x0004鍒?x0007榪欏洓涓繛緇殑瀛楄妭絀洪棿涓紝澶嶆牳0x0004%4=0,涓旂揣闈犵涓涓彉閲忋傜涓変釜鍙橀噺c,鑷韓瀵歸綈鍊間負 2錛屾墍浠ユ湁鏁堝榻愬間篃鏄?錛屽彲浠ュ瓨鏀懼湪0x0008鍒?x0009榪欎袱涓瓧鑺傜┖闂翠腑錛岀鍚?x0008%2=0銆傛墍浠ヤ粠0x0000鍒?x0009瀛樻斁鐨?閮芥槸B鍐呭銆傚啀鐪嬫暟鎹粨鏋凚鐨勮嚜韜榻愬間負鍏跺彉閲忎腑鏈澶у榻愬?榪欓噷鏄痓錛夋墍浠ュ氨鏄?錛屾墍浠ョ粨鏋勪綋鐨勬湁鏁堝榻愬間篃鏄?銆傛牴鎹粨鏋勪綋鍦嗘暣鐨勮姹傦紝 0x0009鍒?x0000=10瀛楄妭錛岋紙10錛?錛夛紖4錛?銆傛墍浠?x0000A鍒?x000B涔熶負緇撴瀯浣揃鎵鍗犵敤銆傛晠B浠?x0000鍒?x000B 鍏辨湁12涓瓧鑺?sizeof(struct B)=12;鍏跺疄濡傛灉灝辮繖涓涓氨鏉ヨ瀹冨凡灝嗘弧瓚沖瓧鑺傚榻愪簡, 鍥犱負瀹冪殑璧峰鍦板潃鏄?,鍥犳鑲畾鏄榻愮殑,涔嬫墍浠ュ湪鍚庨潰琛ュ厖2涓瓧鑺?鏄洜涓虹紪璇戝櫒涓轟簡瀹炵幇緇撴瀯鏁扮粍鐨勫瓨鍙栨晥鐜?璇曟兂濡傛灉鎴戜滑瀹氫箟浜嗕竴涓粨鏋凚鐨勬暟緇?閭?涔堢涓涓粨鏋勮搗濮嬪湴鍧鏄?娌℃湁闂,浣嗘槸絎簩涓粨鏋勫憿?鎸夌収鏁扮粍鐨勫畾涔?鏁扮粍涓墍鏈夊厓绱犻兘鏄揣鎸ㄧ潃鐨?濡傛灉鎴戜滑涓嶆妸緇撴瀯鐨勫ぇ灝忚ˉ鍏呬負4鐨勬暣鏁板?閭d箞涓嬩竴 涓粨鏋勭殑璧峰鍦板潃灝嗘槸0x0000A,榪欐樉鐒朵笉鑳芥弧瓚崇粨鏋勭殑鍦板潃瀵歸綈浜?鍥犳鎴戜滑瑕佹妸緇撴瀯琛ュ厖鎴愭湁鏁堝榻愬ぇ灝忕殑鏁存暟鍊?鍏跺疄璇稿:瀵逛簬char鍨嬫暟鎹紝鍏?鑷韓瀵歸綈鍊間負1錛屽浜巗hort鍨嬩負2錛屽浜巌nt,float,double綾誨瀷錛屽叾鑷韓瀵歸綈鍊間負4錛岃繖浜涘凡鏈夌被鍨嬬殑鑷韓瀵歸綈鍊間篃鏄熀浜庢暟緇勮冭檻鐨?鍙?鏄洜涓鴻繖浜涚被鍨嬬殑闀垮害宸茬煡浜?鎵浠ヤ粬浠殑鑷韓瀵歸綈鍊間篃灝卞凡鐭ヤ簡.
鍚岀悊,鍒嗘瀽涓婇潰渚嬪瓙C錛?br>#pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C
{
char b;
int a;
short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
絎?涓涓彉閲廱鐨勮嚜韜榻愬間負1錛屾寚瀹氬榻愬間負2錛屾墍浠ワ紝鍏舵湁鏁堝榻愬間負1錛屽亣璁綜浠?x0000寮濮嬶紝閭d箞b瀛樻斁鍦?x0000錛岀鍚?x0000%1= 0;絎簩涓彉閲忥紝鑷韓瀵歸綈鍊間負4錛屾寚瀹氬榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛屾墍浠ラ『搴忓瓨鏀懼湪0x0002銆?x0003銆?x0004銆?x0005鍥涗釜榪炵畫 瀛楄妭涓紝絎﹀悎0x0002%2=0銆傜涓変釜鍙橀噺c鐨勮嚜韜榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛岄『搴忓瓨鏀?br>鍦?x0006銆?x0007涓紝絎﹀悎 0x0006%2=0銆傛墍浠ヤ粠0x0000鍒?x00007鍏卞叓瀛楄妭瀛樻斁鐨勬槸C鐨勫彉閲忋傚張C鐨勮嚜韜榻愬間負4錛屾墍浠鐨勬湁鏁堝榻愬間負2銆傚張8%2=0,C 鍙崰鐢?x0000鍒?x0007鐨勫叓涓瓧鑺傘傛墍浠izeof(struct C)=8.鍥?濡備綍淇敼緙栬瘧鍣ㄧ殑榛樿瀵歸綈鍊?
浜?閽堝瀛楄妭瀵歸綈,鎴戜滑鍦ㄧ紪紼嬩腑濡備綍鑰冭檻?
濡傛灉鍦ㄧ紪紼嬬殑鏃跺欒鑰冭檻鑺傜害絀洪棿鐨勮瘽,閭d箞鎴戜滑鍙渶瑕佸亣瀹氱粨鏋勭殑棣栧湴鍧鏄?,鐒跺悗鍚勪釜鍙橀噺鎸夌収涓婇潰鐨勫師鍒欒繘琛屾帓鍒楀嵆鍙?鍩烘湰鐨勫師鍒欏氨鏄妸緇撴瀯涓殑鍙橀噺鎸夌収 綾誨瀷澶у皬浠庡皬鍒板ぇ澹版槑,灝介噺鍑忓皯涓棿鐨勫~琛ョ┖闂?榪樻湁涓縐嶅氨鏄負浜嗕互絀洪棿鎹㈠彇鏃墮棿鐨勬晥鐜?鎴戜滑鏄劇ず鐨勮繘琛屽~琛ョ┖闂磋繘琛屽榻?姣斿:鏈変竴縐嶄嬌鐢ㄧ┖闂存崲鏃墮棿鍋?娉曟槸鏄懼紡鐨勬彃鍏eserved鎴愬憳錛?br> struct A{
char a;
char reserved[3];//浣跨敤絀洪棿鎹㈡椂闂?br> int b;
}
reserved鎴愬憳瀵規垜浠殑紼嬪簭娌℃湁浠涔堟剰涔?瀹冨彧鏄搗鍒板~琛ョ┖闂翠互杈懼埌瀛楄妭瀵歸綈鐨勭洰鐨?褰撶劧鍗充嬌涓嶅姞榪欎釜鎴愬憳閫氬父緙栬瘧鍣ㄤ篃浼氱粰鎴戜滑鑷姩濉ˉ瀵歸綈,鎴戜滑鑷繁鍔犱笂瀹冨彧鏄搗鍒版樉寮忕殑鎻愰啋浣滅敤.鍏?瀛楄妭瀵歸綈鍙兘甯︽潵鐨勯殣鎮?
unsigned int i = 0x12345678;
unsigned char *p=NULL;
unsigned short *p1=NULL;
*p=0x00;
p1=(unsigned short *)(p+1);
*p1=0x0000;
鏈鍚庝袱鍙ヤ唬鐮侊紝浠庡鏁拌竟鐣屽幓璁塊棶unsignedshort鍨嬪彉閲忥紝鏄劇劧涓嶇鍚堝榻愮殑瑙勫畾銆?br>鍦▁86涓婏紝綾諱技鐨勬搷浣滃彧浼氬獎鍝嶆晥鐜囷紝浣嗘槸鍦∕IPS鎴栬卻parc涓婏紝鍙兘灝辨槸涓涓猠rror,鍥犱負瀹冧滑瑕佹眰蹇呴』瀛楄妭瀵歸綈.涓?濡備綍鏌ユ壘涓庡瓧鑺傚榻愭柟闈㈢殑闂:
3. 濡傛灉鏀寔鐪嬭緗簡瀵歸綈涓庡惁,濡傛灉娌℃湁鍒欑湅璁塊棶鏃墮渶瑕佸姞鏌愪簺鐗規畩鐨勪慨楗版潵鏍囧織鍏剁壒孌婅闂搷浣溿?/p>
from DUI0067D_ADS1_2_CompLib
1.__align(num)
榪欎釜鐢ㄤ簬淇敼鏈楂樼駭鍒璞$殑瀛楄妭杈圭晫銆傚湪姹囩紪涓嬌鐢↙DRD鎴栬匰TRD鏃?br> 灝辮鐢ㄥ埌姝ゅ懡浠_align(8)榪涜淇グ闄愬埗銆傛潵淇濊瘉鏁版嵁瀵硅薄鏄浉搴斿榻愩?br> 榪欎釜淇グ瀵硅薄鐨勫懡浠ゆ渶澶ф槸8涓瓧鑺傞檺鍒?鍙互璁?瀛楄妭鐨勫璞¤繘琛?瀛楄妭
瀵歸綈,浣嗘槸涓嶈兘璁?瀛楄妭鐨勫璞?瀛楄妭瀵歸綈銆?br> __align鏄瓨鍌ㄧ被淇敼,浠栧彧淇グ鏈楂樼駭綾誨瀷瀵硅薄涓嶈兘鐢ㄤ簬緇撴瀯鎴栬呭嚱鏁板璞°?br>
2.__packed
__packed鏄繘琛屼竴瀛楄妭瀵歸綈
1.涓嶈兘瀵筽acked鐨勫璞¤繘琛屽榻?br> 2.鎵鏈夊璞$殑璇誨啓璁塊棶閮借繘琛岄潪瀵歸綈璁塊棶
3.float鍙婂寘鍚玣loat鐨勭粨鏋勮仈鍚堝強鏈敤__packed鐨勫璞″皢涓嶈兘瀛楄妭瀵歸綈
4.__packed瀵瑰眬閮ㄦ暣褰㈠彉閲忔棤褰卞搷
5.寮哄埗鐢眜npacked瀵硅薄鍚憄acked瀵硅薄杞寲鏄湭瀹氫箟,鏁村艦鎸囬拡鍙互鍚堟硶瀹?br> 涔変負packed銆?br> __packed int* p; //__packed int 鍒欐病鏈夋剰涔?br> 6.瀵歸綈鎴栭潪瀵歸綈璇誨啓璁塊棶甯︽潵闂
__packed struct STRUCT_TEST
{
char a;
int b;
char c;
} ; //瀹氫箟濡備笅緇撴瀯姝ゆ椂b鐨勮搗濮嬪湴鍧涓瀹氭槸涓嶅榻愮殑
//鍦ㄦ爤涓闂産鍙兘鏈夐棶棰?鍥犱負鏍堜笂鏁版嵁鑲畾鏄榻愯闂甗from CL]
//灝嗕笅闈㈠彉閲忓畾涔夋垚鍏ㄥ眬闈欐佷笉鍦ㄦ爤涓?
static char* p;
static struct STRUCT_TEST a;
void Main()
{
__packed int* q; //姝ゆ椂瀹氫箟鎴恄_packed鏉ヤ慨楗板綋鍓峲鎸囧悜涓洪潪瀵歸綈鐨勬暟鎹湴鍧涓嬮潰鐨勮闂垯鍙互
q = (int*)(p+1);
*q = 0x87654321;
/*
寰楀埌璧嬪肩殑姹囩紪鎸囦護寰堟竻妤?br>ldr r5,0x20001590 ; = #0x12345678
[0xe1a00005] mov r0,r5
[0xeb0000b0] bl __rt_uwrite4 //鍦ㄦ澶勮皟鐢ㄤ竴涓啓4byte鐨勬搷浣滃嚱鏁?
[0xe5c10000] strb r0,[r1,#0] //鍑芥暟榪涜4嬈trb鎿嶄綔鐒跺悗榪斿洖淇濊瘉浜嗘暟鎹紜殑璁塊棶
[0xe1a02420] mov r2,r0,lsr #8
[0xe5c12001] strb r2,[r1,#1]
[0xe1a02820] mov r2,r0,lsr #16
[0xe5c12002] strb r2,[r1,#2]
[0xe1a02c20] mov r2,r0,lsr #24
[0xe5c12003] strb r2,[r1,#3]
[0xe1a0f00e] mov pc,r14
*/
濡傛灉q娌℃湁鍔燺_packed淇グ鍒欐眹緙栧嚭鏉ユ寚浠ゆ槸榪欐牱鐩存帴浼氬鑷村鍦板潃澶勮闂け璐?br>[0xe59f2018] ldr r2,0x20001594 ; = #0x87654321
[0xe5812000] str r2,[r1,#0]
*/
}
VOID OnPaint()
{
HDC hdc = GetDC(hWnd);
HDC bitmap_dc = CreateCompatibleDC(hdc);
HBITMAP bitmap = CreateCompatibleBitmap(hdc,1024,768);
SelectObject(bitmap_dc,bitmap);
/**//********************************************
DrawBlock
*********************************************/
int x = tetris.GetX();
int y = tetris.GetY();
for(int i=0; i<4; ++i)
{
for(int j=0; j<4; ++j)
{
if(current_block[i][j] == 1)
{
DrawBlock(bitmap_dc,y+i+1,x+j+1,3,3,tetris.GetColor(),RGB(0,0,0));
}
}
}
/**//*****************************************
*DrawContainer
******************************************/
for(int i=0; i<ROWS; ++i)
{
for(int j=0; j<COLS; ++j)
{
if(Container[i][j] == 1)
{
DrawBlock(bitmap_dc,i+1,j+1,3,3,ColorTable[i][j],RGB(0,0,0));
}
}
}
BitBlt(hdc,0,0,1024,768,bitmap_dc,0,0,SRCCOPY);
DeleteDC(bitmap_dc);
DeleteObject(bitmap);
ReleaseDC(hWnd,hdc);
}
浠ヤ笂灝辨槸GDI緙撳啿鐨勪富瑕佸疄鐜頒唬鐮併?br>
鍙墽琛屾枃浠朵笅杞?/a>
浠g爜榪樻槸絳夊叏閮ㄥ畬鍠勫悗涓婁紶鍚с俁edist璇瘋嚜琛屼笅杞姐?/span>
浠g爜浼拌瑕佹湁澶х殑鏀瑰姩錛屾劅瑙夌幇鍦ㄧ殑浠g爜娌′竴鐐笴++鐨勫懗閬撱?br>鏈夌偣綆鍗曪紝鐢ㄩ檲鍧ょ殑璇濊灝辨槸鎵╁睍鎬т笉濂姐?
#include<iostream>
#include<vector>
using namespace std;
void Print(vector<int>& vec)
{
for(int i = 0; i < vec.size(); ++i)cout<<' '<<vec[i];
cout<<endl;
}
int main()
{
vector<int> first;
vector<int> second(4, 1000);
vector<int> third(second.begin() + 2, second.end());
vector<int> forth(third);
vector<int>::iterator it;
int val[] =
{1,2,3,4};
vector<int> fifth(val, val + sizeof(val) / sizeof(val[0]));
cout<<"First:";
Print(first);
cout<<"Second:";
Print(second);
cout<<"Third:";
Print(third);
cout<<"Forth:";
Print(forth);
cout<<"Fifth:";
Print(fifth);
first.swap(fifth);
cout<<"First:";
Print(first);
first.push_back(12);
cout<<"First:";
Print(first);
it = first.begin() + 2;
first.erase(it,first.end());
cout<<"First:";
Print(first);
it = first.begin();
first.insert(it,100);
cout<<"First:";
Print(first);
system("pause");
return 0;
}
Deque鎿嶄綔浠g爜綾諱技銆?br>浼樺娍錛氭瘮涔媀ector鍦ㄥご閮ㄦ彃鍏ュ垹闄ゅ厓绱犱篃鏈夊緢楂樻晥鐜囥備篃鏀寔榪唬鍣ㄩ殢鏈鴻闂備笉榪囧厓绱犲湪鍐呭瓨涓笉榪炵畫銆?br>
List鎿嶄綔鍩烘湰鐩稿悓涓嶈繃澶氫簡涓浜涘姛鑳?br>浼樺娍錛氶珮鏁堥亶鍘嗗厓绱狅紝甯擱噺鏃墮棿鎻掑叆鍒犻櫎浠繪剰浣嶇疆鍏冪礌銆?br>
#include<iostream>
#include<list>
using namespace std;
void Print(list<int>& ls)
{
list<int>::iterator it = ls.begin();
for(; it != ls.end(); ++it)cout<<' '<<*it;
cout<<endl;
}
void Print(list<double>& ls)
{
list<double>::iterator it = ls.begin();
for(; it != ls.end(); ++it)cout<<' '<<*it;
cout<<endl;
}
int main()
{
list<int> first;
list<int> second(4, 1000);
list<int>::iterator it;
double first_val[] =
{1.0,3.0,2.0,4.0};
list<double> third(first_val, first_val + sizeof(first_val) / sizeof(first_val[0]));
double sencond_val[] =
{1.1,4.3,1.4,2.9};
list<double> fourth(sencond_val, sencond_val + sizeof(sencond_val)/sizeof(sencond_val[0]));
it = first.begin();
first.insert(it,100);
cout<<"First:";
Print(first);
it = first.begin();
first.splice(it,second);//splice鍥涗釜鍙傛暟錛岀涓涓弬鏁版槸鎻掑叆鐨勪綅緗紝絎簩涓槸鎻掑叆婧愶紝絎笁鍥涗釜鍙傛暟鎸囧畾鑼冨洿
cout<<"First:";
Print(first);
first.remove(100);
cout<<"First:";
Print(first);
third.sort();
fourth.sort();
cout<<"Third:";
Print(third);
cout<<"Fourth:";
Print(fourth);
third.merge(fourth);
cout<<"Third:";
Print(third);
system("pause");
return 0;
}
splice鍦ㄤ唬鐮佷腑宸茬粡璇存槑錛宮erge鍑芥暟鍚堝茍涓や釜list鑰屼笖鏄寜鐓т粠灝忓埌澶х殑欏哄簭錛宮erge鏈夊彟涓涓増鏈寘鍚袱涓弬鏁幫紝鍙︿竴涓槸涓涓?br>榪斿洖bool綾誨瀷鐨勫嚱鏁幫紝璇存槑浜嗘瘮杈冭鍒欍傜敤娉曠浉鍚屻傚彟澶栦竴浜涘嚱鏁頒嬌鐢ㄦ瘮杈冪畝鍗曘?br>璇ョ被絎旇鍧囧弬鑰冿細www.cplusplus.com
2)C 璇█鏄墍璋撶殑“灝忓唴鏍?#8221;璇█錛屽氨鍏惰璦鏈韓鏉ヨ寰堝皬錛堜笉澶氱殑鍏抽敭瀛楋紝紼嬪簭嫻佺▼鎺у埗錛屾暟鎹被鍨嬬瓑錛夛紱鎵浠ワ紝C 璇█鍐呮牳寮鍙戝嚭鏉ヤ箣鍚庯紝Dennis Ritchie 鍜? Brian Kernighan 灝辯敤 C 鏈韓閲嶅啓浜? 90% 浠ヤ笂鐨? UNIX 緋葷粺鍑芥暟錛屽茍涓旀妸鍏朵腑鏈甯哥敤鐨勯儴鍒嗙嫭绔嬪嚭鏉ワ紝褰㈡垚澶存枃浠跺拰瀵瑰簲鐨? LIBRARY錛孋 run-time library 灝辨槸榪欐牱褰㈡垚鐨勩?
3)闅忓悗錛岄殢鐫 C 璇█鐨勬祦琛岋紝鍚勪釜 C 緙栬瘧鍣ㄧ殑鐢熶駭鍟?涓綋/鍥綋閮介伒寰佺殑浼犵粺錛屽湪涓嶅悓騫沖彴涓婇兘鏈夌浉瀵瑰簲鐨? Standard Library錛屼絾澶ч儴鍒嗗疄鐜伴兘鏄笌鍚勪釜騫沖彴鏈夊叧鐨勩傜敱浜庡悇涓? C 緙栬瘧鍣ㄥ C 鐨勬敮鎸佸拰鐞嗚В鏈夊緢澶氬垎姝у拰寰鐨勫樊鍒紝鎵浠ュ氨鏈変簡 ANSI C錛汚NSI C 錛堜富瑙傛剰鍥句笂錛夎緇嗙殑瑙勫畾浜? C 璇█鍚勪釜瑕佺礌鐨勫叿浣撳惈涔夊拰緙栬瘧鍣ㄥ疄鐜拌姹傦紝寮曡繘浜嗘柊鐨勫嚱鏁板0鏄庢柟寮忥紝鍚屾椂璁㈢珛浜? Standard Library 鐨勬爣鍑嗗艦寮忋傛墍浠榪愯鏃跺簱鐢辯紪璇戝櫒鐢熶駭鍟嗘彁渚涖傝嚦浜庣敱鍏朵粬鍘傚晢/涓漢/鍥綋鎻愪緵鐨勫ご鏂囦歡鍜屽簱鍑芥暟錛屽簲褰撶О涓虹涓夋柟 C 榪愯搴擄紙Third party C run-time libraries錛夈?
4)C run-time library閲岄潰鍚湁鍒濆鍖栦唬鐮侊紝榪樻湁閿欒澶勭悊浠g爜(渚嬪divide by zero澶勭悊)銆備綘鍐欑殑紼嬪簭鍙互娌℃湁math搴擄紝紼嬪簭鐓ф牱榪愯錛屽彧鏄笉鑳藉鐞嗗鏉傜殑鏁板榪愮畻錛屼笉榪囧鏋滄病鏈変簡C run-time搴擄紝main()灝變笉浼氳璋冪敤錛宔xit()涔熶笉鑳借鍝嶅簲銆傚洜涓篊 run-time library鍖呭惈浜咰紼嬪簭榪愯鐨勬渶鍩烘湰鍜屾渶甯哥敤鐨勫嚱鏁般?
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鍙堝垎涓哄姩鎬佽繍琛屾椂搴撳拰闈欐佽繍琛屾椂搴撱?
鍔ㄦ佽繍琛屾椂搴撲富瑕佹槸DLL搴撴枃浠秏svcrt.dll(or MSVCRTD.DLL for debug build),瀵瑰簲鐨処mport library鏂囦歡鏄疢SVCRT.LIB(MSVCRTD.LIB for debug build)
闈欐佽繍琛屾椂搴?release鐗?瀵瑰簲鐨勪富瑕佹枃浠舵槸錛?
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)閾炬帴榪涙潵銆?
緙栬瘧鏃跺埌搴曞摢涓狢 run-time library鑱斿叆浣犵殑紼嬪簭鍙栧喅浜庣紪璇戦夐」錛?
/MD, /ML, /MT, /LD (Use Run-Time Library)
浣犲彲浠C涓氳繃浠ヤ笅鏂規硶璁劇疆閫夋嫨鍝釜C run-time library鑱斿叆浣犵殑紼嬪簭錛?
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鎻愪緵浜嗙粺涓鐨勬敮鎸?
1//姣忕鐜閮借緗竴涓畯涓旈兘緗?
2#define PLAT_GTK 0
3#define PLAT_GTK_WIN32 0
4#define PLAT_MACOSX 0
5#define PLAT_WIN 0
6#define PLAT_WX 0
7#define PLAT_FOX 0
8//濡傛灉璇ョ幆澧冩湁鏁堝垯鍙栨秷鍘熸湁瀹忎笖緗?
9#if defined(FOX)
10#undef PLAT_FOX
11#define PLAT_FOX 1
12
13#if defined(__WIN32__) || defined(_MSC_VER)
14#undef PLAT_GTK_WIN32
15#define PLAT_GTK_WIN32 1
16#endif
17
18#else
19#undef PLAT_WIN
20#define PLAT_WIN 1
21
22#endif
23class Palette
{
int used;
int size;
ColourPair *entries;
#if PLAT_GTK//1涓虹湡錛岃繖閲屽彲浠ユ槸涓涓父閲忚〃杈懼紡
void *allocatedPalette; // GdkColor *
int allocatedLen;
#endif
typedef void *FontID;
typedef void *SurfaceID;
typedef void *WindowID;
typedef void *MenuID;
typedef void *TickerID;
typedef void *Function;
typedef void *IdlerID;
涓嶅悓騫沖彴鐨勫叿浣撶被鍨嬩笉鍚岋紝鍙互鐢ㄨ鏂規硶瀹氫箟鏂扮殑鍚嶅瓧錛屼嬌紼嬪簭鏇存竻鏅般?br>
void Set(unsigned int red, unsigned int green, unsigned int blue)
{
co = red | (green << 8) | (blue << 16);
}
static inline unsigned int ValueOfHex(const char ch)
{
if (ch >= '0' && ch <= '9')
return ch - '0';
else if (ch >= 'A' && ch <= 'F')
return ch - 'A' + 10;
else if (ch >= 'a' && ch <= 'f')
return ch - 'a' + 10;
else
return 0;
}
void Set(const char *val)
{
if (*val == '#')
{
val++;
}
unsigned int r = ValueOfHex(val[0]) * 16 + ValueOfHex(val[1]);
unsigned int g = ValueOfHex(val[2]) * 16 + ValueOfHex(val[3]);
unsigned int b = ValueOfHex(val[4]) * 16 + ValueOfHex(val[5]);
Set(r, g, b);
}
1/**//* XPM */
2static char * arrow_xpm[] =
{
3"12 12 3 1",
4" c None",
5". c #000000",
6"+ c #808080",
7" ",
8" .+ ",
9" .+ ",
10" +.+ ",
11"
..+ ",
12"
+ ",
13"
+ ",
14"
..+ ",
15" +.+ ",
16" .+ ",
17" .+ ",
18" "};
19
const_cast錛?/span>reinterpret_cast錛?/span>static_cast錛?/span>dynamic_cast絳夌瓑銆?nbsp;
1錛?/span>static_cast<T*>(a)
灝嗗湴鍧a杞崲鎴愮被鍨婽錛孴鍜宎蹇呴』鏄寚閽堛佸紩鐢ㄣ佺畻鏈被鍨嬫垨鏋氫婦綾誨瀷銆?nbsp;
琛ㄨ揪寮?/span>static_cast<T*>(a), a鐨勫艱漿鎹負妯℃澘涓寚瀹氱殑綾誨瀷T銆傚湪榪愯鏃惰漿鎹㈣繃紼嬩腑錛屼笉榪涜綾誨瀷媯鏌ユ潵紜繚杞崲鐨勫畨鍏ㄦс?nbsp;
渚嬪瓙錛?nbsp;
2錛?/span>dynamic_cast<T*>(a)
瀹屾垚綾誨眰嬈$粨鏋勪腑鐨勬彁鍗囥俆蹇呴』鏄竴涓寚閽堛佸紩鐢ㄦ垨鏃犵被鍨嬬殑鎸囬拡銆俛蹇呴』鏄喅瀹氫竴涓寚閽堟垨寮曠敤鐨勮〃杈懼紡銆?nbsp;
琛ㄨ揪寮?/span>dynamic_cast<T*>(a) 灝哸鍊艱漿鎹負綾誨瀷涓篢鐨勫璞℃寚閽堛傚鏋滅被鍨婽涓嶆槸a鐨勬煇涓熀綾誨瀷錛岃鎿嶄綔灝嗚繑鍥炰竴涓┖鎸囬拡銆?nbsp;
渚嬪瓙錛?nbsp;
3錛?/span>const_cast<T*>(a)
鍘繪帀綾誨瀷涓殑甯擱噺錛岄櫎浜?/span>const鎴栦笉紼沖畾鐨勫彉鍧鏁幫紝T鍜宎蹇呴』鏄浉鍚岀殑綾誨瀷銆?nbsp;
琛ㄨ揪寮?/span>const_cast<T*>(a)琚敤浜庝粠涓涓被涓幓闄や互涓嬭繖浜涘睘鎬э細const, volatile, 鍜?nbsp;__unaligned銆?nbsp;
渚嬪瓙錛?
4錛?/span>reinterpret_cast<T*>(a)
浠諱綍鎸囬拡閮藉彲浠ヨ漿鎹㈡垚鍏跺畠綾誨瀷鐨勬寚閽堬紝T蹇呴』鏄竴涓寚閽堛佸紩鐢ㄣ佺畻鏈被鍨嬨佹寚鍚戝嚱鏁扮殑鎸囬拡鎴栨寚鍚戜竴涓被鎴愬憳鐨勬寚閽堛?nbsp;
琛ㄨ揪寮?/span>reinterpret_cast<T*>(a)鑳藉鐢ㄤ簬璇稿char* 鍒?nbsp;int*錛屾垨鑰匫ne_class* 鍒?nbsp;Unrelated_class*絳夌被浼艱繖鏍風殑杞崲錛屽洜姝ゅ彲鑳芥槸涓嶅畨鍏ㄧ殑銆?nbsp;
渚嬪瓙錛?nbsp;
鏈枃杞嚜http://www.libing.net.cn/read.php?520
瀹規槗鍑洪敊鐨勫父鐢ㄧ敤娉曪紝鍋氫簡涓浜涙暣鐞嗐?br>
涓錛?/span>璧峰埆鍚嶇殑涓ょ鐢ㄦ硶
姣斿pInt a,b;
絎竴縐嶈〃紺猴細 int*a;int*b;
絎簩縐嶈〃紺猴細 int*a,b;
鎵浠ョ涓縐嶆洿鍍忎竴涓被鍨嬶紝絎簩縐嶆洿鍍忓畯銆?/span>
浜岋紟鏃у紡浠g爜涓0鏄庡璞?/span>
涓夛紟浠g爜綆鍖?/span>
涓哄鏉傜殑澹版槑瀹氫箟涓涓柊鐨勭畝鍗曠殑鍒悕
鏂規硶錛?/span>鍦ㄥ師鏉ョ殑澹版槑閲岄愭鐢ㄥ埆鍚嶆浛鎹竴閮ㄥ垎澶嶆潅澹版槑錛屽姝ゅ驚鐜紝鎶婂甫鍙橀噺鍚嶇殑閮ㄥ垎鐣欏埌鏈鍚庢浛鎹紝寰楀埌鐨勫氨鏄師澹版槑鐨勬渶綆鍖栫増
榪欎釜澹版槑寮曞叆浜?/span> PF 綾誨瀷浣滀負鍑芥暟鎸囬拡鐨勫悓涔夊瓧錛岃鍑芥暟鏈変袱涓?/span> const char * 綾誨瀷鐨勫弬鏁頒互鍙婁竴涓?/span> int 綾誨瀷鐨勮繑鍥炲箋?/span>
濡傛灉瑕佷嬌鐢ㄤ笅鍒楀艦寮忕殑鍑芥暟澹版槑錛岄偅涔堜笂榪拌繖涓?/span> typedef 鏄笉鍙垨緙虹殑錛?/p>
PF Register(PF pf);
Register() 鐨勫弬鏁版槸涓涓?/span> PF 綾誨瀷鐨勫洖璋冨嚱鏁?/span>錛岃繑鍥炴煇涓嚱鏁扮殑鍦板潃錛屽叾緗插悕涓庡厛鍓嶆敞鍐岀殑鍚嶅瓧鐩稿悓銆傚鏋滀笉鐢?/span> typedef錛岄偅涔堜唬鐮佹槸榪欐牱鐨勶細