锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品你懂的,亚洲激情视频在线播放,欧美岛国激情http://www.shnenglu.com/klsmlzm/category/558.html鏆傛椂鏃?/description>zh-cnWed, 21 May 2008 08:36:45 GMTWed, 21 May 2008 08:36:45 GMT60LINUX涓嬬畝鍗曠殑緙栬瘧鍜屼嬌鐢ㄥ姩鎬侀摼鎺ュ簱[compile .so use c++ in linux]http://www.shnenglu.com/klsmlzm/archive/2006/04/21/6026.html鐗電墰鏁f鐗電墰鏁fFri, 21 Apr 2006 07:06:00 GMThttp://www.shnenglu.com/klsmlzm/archive/2006/04/21/6026.htmlhttp://www.shnenglu.com/klsmlzm/comments/6026.htmlhttp://www.shnenglu.com/klsmlzm/archive/2006/04/21/6026.html#Feedback0http://www.shnenglu.com/klsmlzm/comments/commentRss/6026.htmlhttp://www.shnenglu.com/klsmlzm/services/trackbacks/6026.html 瀵瑰姩鎬侀摼鎺ュ簱鐨勬蹇靛叾瀹炶繕寰堟ā緋?鑷繁鐨勭悊瑙f槸:
鎶婁竴浜涘父鐢ㄧ殑浠g爜,濡傚嚱鏁?綾葷瓑,緙栬瘧鎴愪竴涓?鍖?鍗矰LL(WINDOWS涓?鎴栬匰O(LINUX涓?鏂囦歡,
鐒跺悗渚涘叾瀹冪▼搴忎嬌鐢ㄦ椂鐩存帴璋冪敤閲岄潰灝侀棴鐨勫嚱鏁板嵆鍙?瀹炵幇鐨勪唬鐮佺殑閲嶇敤,涔熻妭鐪佷簡
紜洏絀洪棿(榪欑偣鍙兘鏄瑕佺殑鍚?.鍦╓IDOWS涓嬪埄鐢╒C++鍙柟渚跨殑鐢熸垚DLL,鍦↙INUX涓嬪垯闇瑕侀氳繃
鍚勭緙栬瘧鍛戒護鏉ュ疄鐜?瀵逛簬鍍忔垜榪欑鑿滈笩綰х▼搴忓憳鏉ヨ鏄釜涓嶅皬鐨勬寫鎴?
涓嬮潰鐢ㄤ釜綆鍗曠殑渚嬪瓙鏉ヨ鏄庣敓鎴愪竴涓?SO鏂囦歡鍜屽浣曚嬌鐢ㄥ畠:
1.鎴戣繖鏈夊嚑涓枃浠?
ConfigMap.cpp ConfigMap.h (璇婚厤緗枃浠剁被)GetWinState.cpp GetWinState.h(ICE鎺ュ彛鏂囦歡,鐢盨LICE鐢熸垚) GetWinSysState.cpp GetWinSysState.h (榪滅▼鎺ュ彛瀹炵幇鏂囦歡)
SocDbInfo.cpp(灝佽鐨勪竴涓被,鐢ㄤ簬璋冪敤ICE鎺ュ彛瀹炵幇鐩稿叧鎿嶄綔)
璇存槑:姝ょ▼搴忔槸涓轟簡鑾峰緱榪滅▼涓繪満(WINDOWS)涓婁竴浜涚郴緇熶俊鎭?姣斿:CPU鍗犵敤鐜?紜洏浣跨敤鎯呭喌,鏁版嵁
搴撹繛鎺ョ姸鎬?鍐呭瓨浣跨敤鎯呭喌絳?
鎴戞兂鍒╃敤榪欎簺鏂囦歡鐢熸垚鍔ㄦ侀摼鎺ュ簱.SO,涓昏鏄皟鐢⊿ocDbInfo.cpp閲岀殑綾?鐒跺悗鍙互鎷垮埌浠繪剰涓涓郴緇熶腑(LINUX)鍘葷敤.
2.寮濮嬬紪璇?$c++ -I. -I$ICE_HOME/include -c *.cpp
緙栬瘧鍚庣敓鎴愯繛鎺ユ枃浠?鎴戜竴鐩磋繖鏍峰彨,鍙兘涓嶅鍝?,鍗充互.O緇撳熬鐨?br />3.鐢熸垚鍔ㄦ侀摼鎺ュ簱:$c++ -shared -o聽libMyApp.so *.o -L$ICE_HOME/lib -lIce -lIceUtil
榪欐牱灝辯敓鎴愪簡libMyApp.so鏂囦歡,鍗蟲垜浠墍瑕佺殑
4.浣跨敤鍔ㄦ侀摼鎺ュ簱:
鏂板緩涓や釜鏂囦歡Demo.cpp Demo.h(浣跨敤libMyApp.so鎻愪緵鐨勪竴浜涘嚱鏁?,
鍦―emo.h涓0鏄庝簡libMyApp.so涓彁渚涚殑鍑芥暟鍜岀粨鏋勪綋,
Demo.h:浠g爜濡備笅:

struct MemoryInf
{
聽int TotalMem;//脳脺脛脷麓忙麓貿脨隆
聽int ValidMem;//驢脡脢鹿脫脙脛脷麓忙麓貿脨隆
聽int VirtualMem;//脨茅脛芒脛脷麓忙麓貿脨隆
};
struct DiskInf
{
聽int TotalSpace;//脫虜脜脤麓貿脨隆
聽int FreeSpace;//脢攏脫脿驢脮錄盲麓貿脨隆
};
struct DbInf
{
聽int DbStat;//脢媒戮脻驢芒脳麓脤盧:"0"鹵鉚脢戮脢媒戮脻驢芒麓婁脭脷鹿脴鹵脮脳麓脤盧,"1"鹵鉚脢戮脢媒戮脻驢芒脮媒魯攏麓貌驢陋,"2"鹵鉚脢戮脢媒戮脻驢芒麓婁脭脷鹿脪脝冒脳麓脤盧
聽int DbConnNum;//脢媒戮脻驢芒脕盧陸脫脢媒
};
bool Inital( char *ResHostIP);//魯玫脢錄祿爐脥簍脨脜脝梅
bool DesIceCom();//脧煤祿脵ICE脥簍脨脜脝梅
MemoryInf GetMemInf();//碌脙碌陸脛脷麓忙脨脜脧壟
int GetCpuInf();//碌脙碌陸CPU脮錄脫脙脗脢
DbInf GetDbStat();//碌脙碌陸脢媒戮脻驢芒脨脜脧壟
DiskInf GetDiskStat();//碌脙碌陸脫虜脜脤脨脜脧壟



娉?涔辯爜鏄敱浜庢垜鐨凩INUX涓嬩笉鏀寔涓枃鍝?鏄敞閲婁笉鐢ㄧ瀹?br />Demo.cpp:浠g爜濡備笅:
#include <string.h>
#include <iostream>
#include "Demo.h"


int main( int argc , char* argv[])
{

聽MemoryInf mymem;
聽DiskInf mydisk;
聽DbInf mydb;
聽Inital( argv[1]);
聽mydisk = GetDiskStat();
聽mymem = GetMemInf();
聽mydb = GetDbStat();
聽printf("disk total space:%d\n",mydisk.TotalSpace);
聽printf("disk FreeSpace space:%d\n",mydisk.FreeSpace);
聽printf("Memory TotalMem:%d\n",mymem.TotalMem);
聽printf("ValidMem:%d\n",mymem.ValidMem);
聽printf("VirtualMem:%d\n",mymem.VirtualMem);
聽printf("DbConnNum:%d\n",mydb.DbConnNum);
聽printf("DbStat:%d\n",mydb.DbStat);
聽printf("cpu:%d\n",GetCpuInf());
聽DesIceCom();
聽return 1;
}


5.緙栬瘧鏂囦歡鐢熸垚鍙墽琛岀▼搴?
鐢ㄤ互涓嬪懡浠?
$c++聽-lMyApp聽-o聽Demo聽Demo.cpp
璇存槑:-lMyApp鍙傛暟琛ㄧず,鐢ㄥ姩鎬侀摼鎺ュ簱libMyApp.so涓璧瘋繘琛岀紪璇?瀵逛簡libMyApp.so鏈濂芥斁鍦?usr/lib鐩綍涓嬪搱
濡備笉鍑烘剰澶栧垰浼氱敓鎴愬悕涓篋emo鐨勫彲鎵ц鏂囦歡



]]>
杞澆:瀛︿範ICE 3.0--Slice璇█http://www.shnenglu.com/klsmlzm/archive/2005/12/13/1712.html鐗電墰鏁f鐗電墰鏁fTue, 13 Dec 2005 04:00:00 GMThttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1712.htmlhttp://www.shnenglu.com/klsmlzm/comments/1712.htmlhttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1712.html#Feedback0http://www.shnenglu.com/klsmlzm/comments/commentRss/1712.htmlhttp://www.shnenglu.com/klsmlzm/services/trackbacks/1712.html

Slice璇█

棣栧厛錛岃澶у璇籌CE涓枃鎵嬪唽涓殑Slice璇█涓绔犮?榪欎竴閮ㄥ垎闄や簡model錛堟ā鍧楋級錛屽湪 ICE 1.3涓枃鎵嬪唽涓兘鏈夋弿榪?

鍥?nbsp;2.1. ice緗戠粶緙栫▼紺烘剰鍥?鏈嶅姟鍣ㄧ鍜屽鎴風閲囩敤鍚岀緙栫▼璇█C錛嬶紜)

ice緗戠粶緙栫▼紺烘剰鍥?鏈嶅姟鍣ㄧ鍜屽鎴風閲囩敤鍚岀緙栫▼璇█C錛嬶紜)

鍥?nbsp;2.2. ice緗戠粶緙栫▼紺烘剰鍥?鏈嶅姟鍣ㄧ鍜屽鎴風閲囩敤涓嶅悓緙栫▼璇█)

ice緗戠粶緙栫▼紺烘剰鍥?鏈嶅姟鍣ㄧ鍜屽鎴風閲囩敤涓嶅悓緙栫▼璇█)

鍩虹鐭ヨ瘑

鍚湁Slice 瀹氫箟鐨勬枃浠跺繀欏諱互.ice 鎵╁睍鍚嶇粨灝撅紝渚嬪錛?Clock.ice灝辨槸涓涓湁鏁堢殑鏂囦歡鍚嶃傜紪璇戝櫒鎷掔粷鎺ュ彈鍏朵粬鎵╁睍鍚嶃?

Slice 鏀寔#ifndef銆?define銆?endif錛屼互鍙?include 棰勫鐞嗘寚浠ゃ傚畠浠殑浣跨敤鏂瑰紡鏈変弗鏍肩殑闄愬埗錛氫綘鍙兘鎶?ifndef銆?define錛屼互鍙?endif 鎸囦護鐢ㄤ簬鍒涘緩鍙屽寘鎷紙double-include錛夊潡銆備緥濡傦細

#ifndef _CLOCK_ICE
#define _CLOCK_ICE
// #include 鏂囦歡 here...
//瀹氫箟 here...
#endif _CLOCK_ICE

鎴戜滑寮虹儓寤鴻浣犲湪鎵鏈夌殑Slice 瀹氫箟涓嬌鐢ㄥ弻鍖呮嫭錛坉ouble-include錛夊潡錛堟墍涓婏級錛岄槻姝㈠嬈″寘鎷悓涓鏂囦歡銆?

#include 鎸囦護鍙兘鍑虹幇鍦⊿lice 婧愭枃浠剁殑寮澶達紝涔熷氨鏄錛屽畠浠繀欏誨嚭鐜板湪鍏朵粬鎵鏈塖lice 瀹氫箟鐨勫墠闈€傛澶栵紝鍦ㄤ嬌鐢?include 鎸囦護鏃訛紝鍙厑璁鎬嬌鐢?lt;> 璇硶鏉ユ寚瀹氭枃浠跺悕錛屼笉鑳戒嬌鐢?"銆備緥濡傦細

 #include <File1.ice> // OK
#include "File2.ice" // 涓嶆敮鎸?

浣犱笉鑳芥妸榪欎簺棰勫鐞嗘寚浠ょ敤浜庡叾浠栫洰鐨勶紝涔熶笉鑳戒嬌鐢ㄥ叾浠栫殑C++ 棰勫鐞嗘寚浠?錛堟瘮濡傜敤\ 瀛楃鏉ヨ繛鎺ヨ銆乼oken 綺樿創錛屼互鍙婂畯灞曞紑錛岀瓑絳夛級銆?

鍦⊿lice 瀹氫箟閲岋紝鏃㈠彲浠ヤ嬌鐢– 鐨勩佷篃鍙互浣跨敤C++ 鐨勬敞閲婇鏍鹼細

Slice 鍏抽敭瀛楀繀欏誨皬鍐欍備緥濡傦紝 class 鍜宒ictionary 閮芥槸鍏抽敭瀛楋紝蹇呴』鎸夌収鎵紺烘柟寮忔嫾鍐欍傝繖涓鍒欐湁涓や釜渚嬪錛歄bject 鍜孡ocalObject 涔熸槸鍏抽敭瀛楋紝蹇呴』鎸夌収鎵紺烘柟寮忚棣栧瓧姣嶅ぇ鍐欍?

鏍囪瘑絎︿互涓涓瓧姣嶈搗澶達紝鍚庨潰鍙互璺熶換鎰忔暟鐩殑瀛楁瘝鎴栨暟瀛椼係lice 鏍囪瘑絎﹁闄愬埗鍦ˋSCII 瀛楃鑼冨洿鍐咃紝涓嶈兘鍖呭惈闈炶嫳璇瓧姣嶏紝涓嶤++ 鏍囪瘑絎︿笉鍚岋紝 Slice 鏍囪瘑絎︿笉鑳芥湁涓嬪垝綰褲傝繖縐嶉檺鍒跺垵鐪嬩笂鍘繪樉寰楀緢鑻涘埢錛屼絾鍗存槸蹇呰鐨勶細淇濈暀涓嬪垝綰匡紝鍚勭璇█鏄犲皠灝辮幏寰椾簡涓涓悕瀛楃┖闂達紝涓嶄細涓庡悎娉曠殑Slice 鏍囪瘑絎﹀彂鐢熷啿紿併備簬鏄紝榪欎釜鍚嶅瓧絀洪棿鍙敤浜庡瓨鏀句粠Slice 鏍囪瘑絎︽淳鐢熺殑鍘熺敓璇█鏍囪瘑絎︼紝鑰屼笉鐢ㄦ媴蹇冨叾浠栧悎娉曠殑Slice 鏍囪瘑絎︿細紕板閥涓庝箣鐩稿悓錛屼粠鑰屽彂鐢熷啿紿?銆?

鏍囪瘑絎︼紙鍙橀噺鍚嶇瓑絳夛級鏄ぇ灝忓啓涓嶆晱鎰熺殑錛屼絾澶у皬鍐欑殑鎷煎啓鏂瑰紡蹇呴』淇濇寔涓鑷達紙鐪嬩簡鍚庨潰鐨勮瘽錛屽啀鐞嗚В涓涓嬶級銆備緥濡傦紝鍦ㄤ竴涓綔鐢ㄥ煙鍐咃紝 TimeOfDay 鍜孴IMEOFDAY 琚涓烘槸鍚屼竴涓爣璇嗙銆備絾鏄紝Slice 瑕佹眰浣犱繚鎸佸ぇ灝忓啓鐨勪竴鑷存с傚湪浣犲紩鍏ヤ簡涓涓爣璇嗙涔嬪悗錛屼綘蹇呴』濮嬬粓涓鑷村湴鎷煎啓瀹冪殑澶у啓鍜屽皬鍐欏瓧姣嶏紱鍚﹀垯錛岀紪璇戝櫒灝變細灝嗗叾瑙嗕負闈炴硶鑰屽姞浠ユ嫆緇濄傝繖鏉¤鍒欎箣鎵浠ュ瓨鍦紝鏄璁㏒lice 鏃㈣兘鏄犲皠鍒板拷鐣ユ爣璇嗙澶у皬鍐欑殑璇█錛屽張鑳芥槧灝勫埌鎶婂ぇ灝忓啓涓嶅悓鐨勬爣璇嗙褰撲綔涓嶅悓鏍囪瘑絎︾殑璇█銆傦紙鍙互榪欐牱鐞嗚В錛屽彉閲忓悕鍖哄垎澶у皬鍐欙紝騫朵笖涓嶅彲浠ユ槸鐩稿悓鐨勫崟璇嶏級

鏄叧閿瓧鐨勬爣璇嗙:浣犲彲浠ュ畾涔夊湪涓縐嶆垨澶氱瀹炵幇璇█涓槸鍏抽敭瀛楃殑Slice 鏍囪瘑絎︺備緥濡傦紝switch鏄畬鍏ㄥ悎娉曠殑Slice鏍囪瘑絎︼紝浣嗕篃鏄疌++鍜孞ava鐨勫叧閿瓧銆傝璦鏄犲皠瀹氫箟浜嗕竴浜涜鍒欐潵澶勭悊榪欐牱鐨勬爣璇嗙銆傝瑙e喅榪欎釜闂錛岄氬父瑕佺敤涓涓墠緙鏉ヤ嬌鏄犲皠鍚庣殑鏍囪瘑絎︿笉鍐嶆槸鍏抽敭瀛椼備緥濡傦紝 Slice 鏍囪瘑絎witch 琚槧灝勫埌C++ 鐨刜cpp_switch 錛屼互鍙奐ava 鐨刜switch銆傚鍏抽敭瀛楄繘琛屽鐞嗙殑瑙勫垯鍙兘浼氫駭鐢熼毦浠ラ槄璇葷殑婧愮爜銆傚儚native銆乼hrow錛屾垨export 榪欐牱鐨勬爣璇嗙浼氫笌C++ 鎴朖ava錛堟垨涓よ咃級鐨勫叧閿瓧鍙戠敓鍐茬獊銆備負浜嗚浣犲拰鍒漢鐢熸椿寰楁洿杞繪澗涓鐐癸紝浣犲簲璇ラ伩鍏嶄嬌鐢ㄦ槸瀹炵幇璇█鐨勫叧閿瓧鐨凷lice 鏍囪瘑絎︺傝璁頒綇錛屼互鍚嶪ce 鍙兘浼氬鍔犻櫎C++ 鍜孞ava 浠ュ鐨勮璦鏄犲皠銆傚敖綆℃湡鏈涗綘鎬葷粨鍑烘墍鏈夋祦琛岀殑緙栫▼璇█鐨勬墍鏈夊叧閿瓧騫朵笉鍚堢悊錛屼綘鑷沖皯搴旇灝介噺閬垮厤浣跨敤甯哥敤鐨勫叧閿瓧銆備嬌鐢ㄥ儚self銆乮mport錛屼互鍙妛hile 榪欐牱鐨勬爣璇嗙鑲畾涓嶆槸濂戒富鎰忋?

杞箟鐨勬爣璇嗙:鍦ㄥ叧閿瓧鐨勫墠闈㈠姞涓婁竴涓弽鏂滅嚎錛屼綘鍙互鎶奡lice 鍏抽敭瀛楃敤浣滄爣璇嗙錛屼緥濡?

struct dictionary { // 閿欒!
// ...
};
struct \dictionary { // OK
// ...
};

鍙嶆枩綰夸細鏀瑰彉鍏抽敭瀛楅氬父鐨勫惈涔夛紱鍦ㄥ墠闈㈢殑渚嬪瓙涓紝 \dictionary 琚綋浣滄爣璇嗙dictionary銆傝漿涔夋満鍒朵箣鎵浠ュ瓨鍦紝鏄璁╂垜浠湪浠ュ悗鑳藉鍦⊿lice 涓鍔犲叧閿瓧錛屽悓鏃跺敖閲忓噺灝戝宸叉湁瑙勮寖鐨勫獎鍝嶏細濡傛灉鏌愪釜宸茬粡瀛樺湪鐨勮鑼冪宸т嬌鐢ㄤ簡鏂板紩鍏ョ殑鍏抽敭瀛楋紝浣犲彧闇鍦ㄦ柊鍏抽敭瀛楀墠鍔犱笂鍙嶆枩綰匡紝灝辮兘澶熶慨姝h瑙勮寖銆傛敞鎰忥紝浠庨鏍間笂璇達紝浣犲簲璇ラ伩鍏嶇敤Slice 鍏抽敭瀛楀仛鏍囪瘑絎︼紙鍗充嬌鍙嶆枩綰胯漿涔夊厑璁鎬綘榪欎箞鍋氾級銆?

淇濈暀鐨勬爣璇嗙:Slice 涓篒ce 瀹炵幇淇濈暀浜嗘爣璇嗙Ice 鍙婁互Ice 錛堜換浣曞ぇ灝忓啓鏂瑰紡錛夎搗澶寸殑鎵鏈夋爣璇嗙銆備緥濡傦紝濡傛灉浣犺瘯鍥懼畾涔変竴涓悕涓篒cecream 鐨勭被鍨嬶紝 Slice 緙栬瘧鍣ㄤ細鍙戝嚭閿欒璀﹀憡3銆備互涓嬮潰浠諱綍涓縐嶅悗緙緇撳熬鐨凷lice 鏍囪瘑絎︿篃鏄繚鐣欑殑錛欻elper銆丠older銆丳rx錛屼互鍙奝tr銆侸ava 鍜孋++ 璇█鏄犲皠浣跨敤浜嗚繖浜涘悗緙錛屼繚鐣欏畠浠槸涓轟簡闃叉鍦ㄧ敓鎴愮殑浠g爜涓彂鐢熷啿紿併?

錛堟敞錛欼CE 1.3鐨勪腑鏂囨墜鍐屼笂娌℃湁鈥滄ā鍧椻濊繖涓閮ㄥ垎錛夋ā鍧楁潵緇勭粐涓緇勭浉鍏崇殑璇彞鏄負浜嗚В鍐沖悕瀛楀啿紿併傛ā鍧楀彲浠ュ寘鍚墍鏈夊悎娉曠殑Slice璇彞鍜屽瓙妯″潡銆備綘鍙互鐢ㄤ竴浜涗笉甯哥敤鐨勮瘝鏉ョ粰鏈澶栧眰鐨勬ā鍧楀懡鍚嶏紝姣斿鍏徃鍚嶃佷駭鍝佸悕絳夌瓑銆?

module ZeroC {

	module Client {
	// Definitions here...
	};

	module Server {
	// Definitions here...
	};
};

Slice瑕佹眰鎵鏈夌殑瀹氫箟閮芥槸妯″潡鐨勪竴閮ㄥ垎錛屾瘮濡傦紝涓嬮潰鐨勮鍙ュ氨鏄潪娉曠殑銆?

interface I { // 閿欒:鍏ㄥ眬絀洪棿涓彧鍙互鏈夋ā鍧?
// ...
};

澶氫釜鏂囦歡鍙互鍏變韓鍚屼竴涓ā鍧楋紝姣斿錛?

module ZeroC {
// Definitions here...
};

//鍙︿竴涓枃浠朵腑 :
module ZeroC { // OK, reopened module
// More definitions here...
};

鎶婁竴涓ぇ鐨勬ā鍧楁斁鍒板嚑涓枃浠朵腑鍘誨彲浠ユ柟渚跨紪璇戯紙浣犲彧闇閲嶆柊緙栬瘧琚慨鏀圭殑鏂囦歡錛岃屾病鏈夊繀瑕佺紪璇戞暣涓ā鍧楋級銆?

妯″潡灝嗘槧灝勭殑璇█涓殑鐩稿簲緇撴瀯錛屾瘮濡?C++, C#, 鍜?Visual Basic, Slice鐨刴odules琚槧灝勪負namespaces錛沯ava涓鏄犲皠涓簆ackage.

闄や簡灝戞暟涓庣壒瀹氱殑紼嬪簭璇█鐩稿叧鐨勮皟鐢ㄤ箣澶栵紝ice鐨勭粷澶ч儴鍒咥PI錛堝簲鐢ㄧ▼搴忔帴鍙o級閮芥槸鐢⊿lice鏉ュ畾涔夌殑 銆傝繖鏍峰仛鐨勫ソ澶勬槸鍙互鐢ㄤ竴涓狪CE API瀹氫箟鏂囦歡鏉ユ敮鎸佹墍鏈夌殑紼嬪簭璇█銆?

[娉ㄦ剰] 娉ㄦ剰
涓轟簡淇濊瘉浠g爜鐨勭畝媧侊紝浠ュ悗鏂囩珷涓彁鍙婄殑Slice瀹氫箟娌℃湁鍐欏嚭鍖呭惈鐨勬ā鍧楋紝浣犺鍋囧畾璇ヨ鍙ユ槸鍦ㄤ竴涓ā鍧椾腑銆?

琛?nbsp;2.1. Slice鐨勬暟鎹被鍨?/B>

綾誨瀷 鍙栧艱寖鍥?/TH> 澶у皬錛堝崟浣嶏細bit錛?/TH>
bool false or true 鈮?1
byte -128-127鎴?-255 鈮?8
short 2錛?5鑷?15錛? 鈮?16
int 2錛?1鑷?31錛? 鈮?32
long 2錛?3鑷?63錛? 鈮?64
float IEEE鐨勫崟綺懼害 鈮?32 bits
double IEEE鐨勫弻綺懼害 鈮?64 bits
string 鎵鏈塙nicode 瀛楃錛岄櫎浜嗘墍鏈変綅涓洪浂鐨勫瓧絎?/TD> 鍙橀暱

鐢ㄦ埛瀹氫箟鐨勭被鍨?/H3>

  • 鏋氫婦:enum Fruit { Apple, Pear, Orange };

    榪欎釜瀹氫箟寮曞叆浜嗕竴縐嶅悕涓篎ruit 鐨勭被鍨嬶紝榪欐槸涓縐嶆嫢鏈夎嚜宸辨潈鍒╃殑鏂扮被鍨嬨傚叧浜庢庢牱鎶婇『搴忓鹼紙ordinal values錛夎祴緇欐灇涓劇鐨勯棶棰橈紝 Slice 娌℃湁浣滃嚭瀹氫箟銆備緥濡傦紝浣犱笉鑳藉亣瀹氾紝鍦ㄥ悇縐嶅疄鐜拌璦涓紝鏋氫婦絎range 鐨勫奸兘鏄?銆係lice 淇濊瘉鏋氫婦絎︾殑欏哄簭鍊間細浠庡乏鑷沖彸閫掑錛屾墍浠ュ湪鎵鏈夊疄鐜拌璦涓紝Apple 閮芥瘮Pear 瑕佸皬銆備笌C++ 涓嶅悓錛?Slice 涓嶅厑璁鎬綘鎺у埗鏋氫婦絎︾殑欏哄簭鍊鹼紙鍥犱負璁稿瀹炵幇璇█涓嶆敮鎸佽繖縐嶇壒鎬э級錛?

    enum Fruit { Apple = 0, Pear = 7, Orange = 2 }; // 鍑洪敊
    

    鍦ㄥ疄璺典腑錛屽彧瑕佷綘涓嶅湪鍦板潃絀洪棿涔嬮棿浼犻佹灇涓劇鐨勯『搴忓鹼紝浣犲氨涓嶇敤綆℃灇涓劇浣跨敤鐨勫兼槸澶氬皯銆備緥濡傦紝鍙戦佸? 緇欐湇鍔″櫒鏉ヨ〃紺篈pple 鍙兘浼氶犳垚闂錛屽洜涓烘湇鍔″櫒鍙兘娌℃湁鐢? 琛ㄧずApple銆傜浉鍙嶏紝浣犲簲璇ュ氨鍙戦佸糀pple 鏈韓銆傚鏋滃湪鎺ユ敹鏂圭殑鍦板潃絀洪棿涓紝 Apple 鏄敤鍙﹀鐨勯『搴忓艱〃紺虹殑錛?Ice run time 浼氶傚綋鍦扮炕璇戣繖涓箋?

    涓庡湪C++ 閲屼竴鏍鳳紝 Slice 鏋氫婦絎︿篃浼氳繘鍏ュ洿緇曞畠鐨勫悕瀛楃┖闂達紝鎵浠ヤ笅闈㈢殑瀹氫箟鏄潪娉曠殑錛?

    enum Fruit { Apple, Pear, Orange };
    enum ComputerBrands { Apple, IBM, Sun, HP }; // Apple宸茬粡琚畾涔?
    

    Slice 涓嶅厑璁稿畾涔夌┖鐨勬灇涓俱?

  • 緇撴瀯

    Slice 鏀寔鍚湁涓涓垨澶氫釜鏈夊悕縐扮殑鎴愬憳鐨勭粨鏋勶紝榪欎簺鎴愬憳鍙互鍏鋒湁浠繪剰綾誨瀷錛屽寘鎷敤鎴峰畾涔夌殑澶嶆潅綾誨瀷銆備緥濡傦細
    struct TimeOfDay {
    short hour; // 0 - 23
    short minute; // 0 - 59
    short second; // 0 - 59
    };
    
    涓庡湪 C++ 閲屼竴鏍鳳紝榪欎釜瀹氫箟寮曞叆浜嗕竴縐嶅彨浣淭imeOfDay 鐨勬柊綾誨瀷銆傜粨鏋勫畾涔変細褰㈡垚鍚嶅瓧絀洪棿錛屾墍浠ョ粨鏋勬垚鍛樼殑鍚嶅瓧鍙渶鍦ㄥ洿緇曞畠浠殑緇撴瀯閲屾槸鍞竴鐨勩傚湪緇撴瀯鍐呴儴錛屽彧鑳藉嚭鐜版暟鎹垚鍛樺畾涔夛紝榪欎簺瀹氫箟蹇呴』浣跨敤鏈夊悕瀛楃殑綾誨瀷銆備緥濡傦紝浣犱笉鍙兘鍦ㄧ粨鏋勫唴瀹氫箟緇撴瀯錛?
    struct TwoPoints {
    struct Point { //閿欒!
    short x;
    short y;
    };
    Point coord1;
    Point coord2;
    };
    
    榪欎釜瑙勫垯澶т綋涓婇傜敤浜嶴lice錛氱被鍨嬪畾涔変笉鑳藉祵濂楋紙闄や簡妯″潡鏀寔宓屽錛夈傚叾鍘熷洜鏄紝瀵逛簬鏌愪簺鐩爣璇█鑰岃█錛屽祵濂楃殑綾誨瀷瀹氫箟鍙兘浼氶毦浠ュ疄鐜幫紝鑰屼笖錛屽嵆浣胯兘澶熷疄鐜幫紝涔熶細鏋佸ぇ鍦頒嬌浣滅敤鍩熻В鏋愯鍒欏鏉傚寲銆傚浜庡儚Slice 榪欐牱鐨勮鑼冭璦鑰岃█錛屽祵濂楃殑綾誨瀷瀹氫箟騫舵棤蹇呰鈥斺斾綘鎬昏兘浠ヤ笅闈㈢殑鏂瑰紡緙栧啓涓婇潰鐨勫畾涔夛紙榪欑鏂瑰紡鍦ㄩ鏍間笂涔熸洿鍔犳暣媧侊級錛?
    struct Point {
    short x;
    short y;
    };
    struct TwoPoints { // Legal (and cleaner!)
    Point coord1;
    Point coord2;
    }
    
  • 搴忓垪

    搴忓垪鏄彉闀跨殑鍏冪礌鍚戦噺錛?

    sequence<Fruit> FruitPlatter;
    

    搴忓垪鍙互鏄┖鐨勨斺斾篃灝辨槸璇達紝瀹冨彲浠ヤ笉鍖呭惈鍏冪礌錛涘畠涔熷彲浠ユ寔鏈変換鎰忔暟閲忕殑鍏冪礌錛岀洿鍒拌揪鍒頒綘鐨勫鉤鍙扮殑鍐呭瓨闄愬埗銆?

    搴忓垪鍖呭惈鐨勫厓绱犺嚜韜篃鍙互鏄簭鍒椼傝繖縐嶈璁′嬌寰椾綘鑳藉鍒涘緩鍒楄〃鐨勫垪琛細

    sequence<FruitPlatter> FruitBanquet;
    

    搴忓垪鍙敤浜庢瀯寤鴻澶氱collection錛屾瘮濡傚悜閲忋佸垪琛ㄣ侀槦鍒椼侀泦鍚堛佸寘錛坆ag錛夛紝鎴栨槸鏍戯紙嬈″簭鏄惁閲嶈瑕佺敱搴旂敤鍐沖畾錛涘鏋滄棤瑙嗘搴忥紝搴忓垪鍏呭綋鐨勫氨鏄泦鍚堝拰鍖咃級銆?

    搴忓垪鐨勪竴縐嶇壒鍒殑鐢ㄦ硶宸茬粡鎴愪簡鎯敤鎵嬫硶錛屽嵆鐢ㄥ簭鍒楁潵琛ㄧず鍙夌殑鍊箋備緥濡傦紝鎴戜滑鍙兘鎷ユ湁涓涓狿art 緇撴瀯錛岀敤浜庤褰曞皬姹借濺鐨勯浂浠剁殑璇︾粏璧勬枡銆傝繖涓粨鏋勫彲浠ヨ褰曡繖鏍風殑璧勬枡錛氶浂浠跺悕縐般佹弿榪般侀噸閲忋佷環鏍鹼紝浠ュ強鍏朵粬璇︾粏璧勬枡銆?澶囦歡閫氬父閮芥湁搴忓垪鍙鳳紝鎴戜滑鐢ㄤ竴涓猯ong 鍊艱〃紺恒備絾鏈変簺闆朵歡錛屾瘮濡傚父鐢ㄧ殑铻轟笣閽夛紝甯稿父娌℃湁搴忓垪鍙鳳紝閭d箞鎴戜滑鍦ㄨ灪涓濋拤鐨勫簭鍒楀彿瀛楁閲岃鏀捐繘浠涔堝唴瀹癸紵瑕佸鐞嗚繖縐嶆儏鍐碉紝鏈夎繖鏍蜂竴浜涢夋嫨錛?

    • 鐢ㄤ竴涓爣璁板鹼紝姣斿闆訛紝鏉ユ寚紺衡滄病鏈夊簭鍒楀彿鈥濈殑鎯呭喌銆?

      榪欑鏂規硶鏄彲琛岀殑錛屽彧瑕佺‘瀹炴湁鏍囪鍊煎彲鐢ㄣ傚敖綆$湅璧鋒潵涓嶅ぇ鍙兘鏈変漢鎶婇浂鐢ㄤ綔闆朵歡鐨勫簭鍒楀彿錛岃繖騫墮潪鏄笉鍙兘鐨勩傝屼笖錛屽浜庡叾浠栫殑鍊鹼紝姣斿娓╁害鍊鹼紝鍦ㄥ叾綾誨瀷鐨勮寖鍥翠腑鐨勬墍鏈夊奸兘鍙兘鏄悎娉曠殑錛屽洜鑰屾病鏈夋爣璁板煎彲鐢ㄣ?

    • 鎶婂簭鍒楀彿鐨勭被鍨嬩粠long 鍙樻垚string銆?

      涓茶嚜宸辨湁鍐呭緩鐨勬爣璁板鹼紝涔熷氨鏄┖涓詫紝鎵浠ユ垜浠彲浠ョ敤絀轟覆鏉ユ寚紺?鈥滄病鏈夊簭鍒楀彿鈥濈殑鎯呭喌銆傝繖涔熸槸鍙鐨勶紝浣嗗嵈浼氳澶у鏁頒漢鎰熷埌涓嶅揩錛氭垜浠笉搴旇涓轟簡寰楀埌涓涓爣璁板鹼紝鑰屾妸鏌愮浜嬬墿鑷劧鐨勬暟鎹被鍨嬪彉鎴恠tring

    • 澧炲姞涓涓寚紺虹鏉ユ寚紺哄簭鍒楀彿鐨勫唴瀹規槸鍚︽湁鏁?

      struct Part {
      string name;
      string description;
      // ...
      bool serialIsValid; // true if part has serial number
      long serialNumber;
      };
      

      瀵逛簬澶у鏁頒漢鑰岃█錛岃繖涔熻浜鴻鍘岋紝鑰屼笖鏈緇堣偗瀹氫細璁╀綘閬囧埌楹葷儲錛氳繜鏃╀細鏈夌▼搴忓憳蹇樿鍦ㄤ嬌鐢ㄥ簭鍒楀彿涔嬪墠媯鏌ュ畠鏄惁鏈夋晥錛屼粠鑰屽甫鏉ョ伨闅炬х殑鍚庢灉銆?

    • 鐢ㄥ簭鍒楁潵寤虹珛鍙夊瓧孌?

      榪欑鎶鏈嬌鐢ㄤ簡涓嬮潰鐨勬儻鐢ㄦ墜娉曪細

      sequence<long> SerialOpt;
      struct Part {
      string name;
      string description;
      // ...
      SerialOpt serialNumber; // optional: zero or one element
      };
      

      鎸夌収鎯緥錛?Opt 鍚庣紑琛ㄧず榪欎釜搴忓垪鏄敤鏉ュ緩绔嬪彲閫夊肩殑銆傚鏋滃簭鍒楁槸絀虹殑錛屽兼樉鐒跺氨涓嶅湪閭i噷錛涘鏋滃畠鍚湁涓涓厓绱狅紝榪欎釜鍏冪礌灝辨槸閭d釜鍊箋傝繖縐嶆柟妗堟槑鏄劇殑緙虹偣鏄紝鏈変漢鍙兘浼氭妸涓嶆涓涓厓绱犳斁鍏ュ簭鍒椼備負鍙夊煎鍔犱竴涓笓鐢ㄧ殑Slice 鎴愬垎鍙互綰犳榪欎釜闂銆備絾鍙夊煎茍闈為偅涔堝父鐢紝涓嶅煎緱涓哄畠澧炲姞涓縐嶄笓闂ㄧ殑璇█鐗規э紙鎴戜滑灝嗙湅鍒幫紝浣犺繕鍙互鐢ㄧ被灞傛鏉ュ緩绔嬪彲閫夊瓧孌碉級銆?

  • 璇嶅吀

    璇嶅吀鏄粠閿被鍨嬪埌鍊肩被鍨嬬殑鏄犲皠銆備緥濡傦細

    struct Employee {
    long number;
    string firstName;
    string lastName;
    };
    dictionary<long, Employee> EmployeeMap;
    

    榪欎釜瀹氫箟鍒涘緩涓縐嶅彨浣淓mployeeMap 鐨勮瘝鍏革紝鎶婇泧鍛樺彿鏄犲皠鍒板惈鏈夐泧鍛樿緇嗚祫鏂欑殑緇撴瀯銆備綘鍙互鑷鍐沖畾閿被鍨嬶紙鍦ㄨ繖涓緥瀛愪腑鏄痩ong 綾誨瀷鐨勯泧鍛樺彿錛夋槸鍚︽槸鍊肩被鍨嬶紙鍦ㄨ繖涓緥瀛愪腑鏄疎mployee 緇撴瀯錛夌殑涓閮ㄥ垎鈥斺斿氨Slice 鑰岃█錛屼綘鏃犻渶璁╅敭鎴愪負鍊肩殑涓閮ㄥ垎銆?

    璇嶅吀鍙敤浜庡疄鐜扮█鐤忔暟緇勶紝鎴栨槸鍏鋒湁闈炴暣鏁伴敭綾誨瀷鐨勪換浣曠敤浜庢煡鎵劇殑鏁版嵁緇撴瀯銆傚敖綆″惈鏈夐敭錛嶅煎鐨勭粨鏋勭殑搴忓垪鍙敤浜庡垱寤哄悓鏍風殑浜嬬墿錛岃瘝鍏歌鏇翠負閫傚疁錛?

    • 璇嶅吀鏄庣‘鍦拌〃杈句簡璁捐鑰呯殑鎰忓浘錛屼篃灝辨槸錛屾彁渚涗粠鍊肩殑鍩燂紙domain錛夊埌鍊肩殑鑼冨洿錛坮ange錛夌殑鏄犲皠錛堝惈鏈夐敭錛嶅煎鐨勭粨鏋勭殑搴忓垪娌℃湁濡傛鏄庣‘鍦拌〃杈懼悓鏍風殑鎰忓浘錛夈?

    • 鍦ㄧ紪紼嬭璦涓綰э紝搴忓垪琚疄鐜版垚鍚戦噺錛堜篃鍙兘鏄垪琛級錛屼篃灝辨槸璇達紝搴忓垪涓嶅ぇ閫傜敤浜庡唴瀹圭█鐤忕殑鍩燂紝鑰屼笖瑕佸畾浣嶅叿鏈夌壒瀹氬肩殑鍏冪礌錛岄渶瑕佽繘琛岀嚎鎬ф煡鎵俱傝岃瘝鍏歌瀹炵幇鎴愭敮鎸侀珮鏁堟煡鎵劇殑鏁版嵁緇撴瀯錛堥氬父鏄搱甯岃〃鎴栫孩榛戞爲錛夛紝鍏跺鉤鍧囨煡鎵炬椂闂存槸O(log n)錛屾垨鑰呮洿濂姐傝瘝鍏哥殑閿被鍨嬫棤闇涓烘暣鍨嬨備緥濡傦紝鎴戜滑鍙互鐢ㄤ笅闈㈢殑瀹氫箟鏉ョ炕璇戜竴鍛ㄦ瘡涓澶╃殑鍚嶇О錛?

      dictionary<string, string> WeekdaysEnglishToGerman;
      

      鏈嶅姟鍣ㄥ疄鐜板彲浠ョ敤閿紞鍊煎Monday鈥揗ontag銆乀uesday鈥揇ienstag錛岀瓑絳夛紝瀵硅繖涓槧灝勮〃榪涜鍒濆鍖栥?

    • 璇嶅吀鐨勫肩被鍨嬪彲浠ユ槸鐢ㄦ埛瀹氫箟鐨勪換浣曠被鍨嬨備絾璇嶅吀鐨勯敭綾誨瀷鍙兘鏄互涓嬬被鍨嬩箣涓錛?

      • 鏁村瀷錛坆yte銆乻hort銆乮nt銆乴ong銆乥ool錛屼互鍙婃灇涓劇被鍨嬶級

      • string

      • 鍏冪礌綾誨瀷涓烘暣鍨嬫垨string 鐨勫簭鍒?

      • 鏁版嵁鎴愬憳鐨勭被鍨嬪彧鏈夋暣鍨嬫垨string 鐨勭粨鏋?

      澶嶆潅鐨勫祵濂楃被鍨嬶紝姣斿宓屽鐨勭粨鏋勬垨璇嶅吀錛屼互鍙婃誕鐐圭被鍨嬶紙float鍜宒ouble錛夛紝涓嶈兘鐢ㄤ綔閿被鍨嬨備箣鎵浠ヤ笉鍏佽浣跨敤澶嶆潅鐨勫祵濂楃被鍨嬶紝鏄洜涓鴻繖浼氫嬌璇嶅吀鐨勮璦鏄犲皠澶嶆潅鍖栵紱涓嶅厑璁鎬嬌鐢ㄦ誕鐐圭被鍨嬶紝鏄洜涓烘誕鐐瑰煎湪璺ㄨ秺鏈哄櫒鐣岀嚎鏃訛紝鍏惰〃紺轟細鍙戠敓鍙樺寲錛屾湁鍙兘瀵艱嚧鎴愰棶棰樼殑鐩哥瓑璇箟銆?

  • 甯擱噺瀹氫箟涓庣洿鎺ラ噺

    Slice 鍏佽浣犲畾涔夊父閲忋傚父閲忓畾涔夌殑綾誨瀷蹇呴』鏄互涓嬬被鍨嬩腑鐨勪竴縐嶏細

    • 鏁村瀷錛坆ool銆乥yte銆乻hort銆乮nt銆乴ong錛屾垨鏋氫婦綾誨瀷錛?

    • float 鎴杁ouble

    • string

    涓嬮潰鏈変竴浜涗緥瀛愶細

    const bool AppendByDefault = true;
    const byte LowerNibble = 0x0f;
    const string Advice = "Don't Panic!";
    const short TheAnswer = 42;
    const double PI = 3.1416;
    enum Fruit { Apple, Pear, Orange };
    const Fruit FavoriteFruit = Pear;
    

    鐩存帴閲忥紙literals錛夌殑璇硶涓嶤++ 鍜孞ava 鐨勪竴鏍鳳紙鏈変竴浜涘皬鐨勪緥澶栵級錛?

    • 甯冨皵甯擱噺鍙兘鐢ㄥ叧閿瓧false鍜宼rue鍒濆鍖栵紙浣犱笉鑳界敤0鍜?鏉ヨ〃紺篺alse鍜宼rue錛夈?

    • 鍜孋++ 涓鏍鳳紝浣犲彲浠ョ敤鍗佽繘鍒躲佸叓榪涘埗錛屾垨鍗佸叚榪涘埗鏂瑰紡鏉ユ寚瀹氭暣鏁扮洿鎺ラ噺銆備緥濡傦細

      const byte TheAnswer = 42;
      const byte TheAnswerInOctal = 052;
      const byte TheAnswerInHex = 0x2A; // or 0x2a
      

      [娉ㄦ剰] 娉ㄦ剰
      濡傛灉浣犳妸byte 瑙i噴鎴愭暟瀛椼佽屼笉鏄綅妯″紡錛屼綘鍦ㄤ笉鍚岀殑璇█閲屽彲鑳戒細寰楀埌涓嶅悓鐨勭粨鏋溿備緥濡傦紝鍦–++ 閲岋紝 byte 鏄犲皠鍒癱har錛屽彇鍐充簬鐩爣騫沖彴錛?char 鍙兘鏄湁絎﹀彿鐨勶紝涔熷彲鑳芥槸鏃犵鍙風殑銆?/TD>
      [娉ㄦ剰] 娉ㄦ剰
      鐢ㄤ簬鎸囩ず闀垮父閲忓拰鏃犵鍙峰父閲忕殑鍚庣紑錛圕++ 浣跨敤鐨刲銆丩銆乽銆乁錛夋槸闈炴硶鐨勶細
      const long Wrong = 0u; // Syntax error
      const long WrongToo = 1000000L; // Syntax error
      
      • 鏁存暟鐩存帴閲忕殑鍊煎繀欏昏惤鍦ㄥ叾甯擱噺綾誨瀷鐨勮寖鍥村唴錛屽惁鍒欑紪璇戝櫒灝變細鍙戝嚭璇婃柇娑堟伅銆?

      • 嫻偣鐩存帴閲忎嬌鐢ㄧ殑鏄疌++璇硶錛岄櫎浜嗕綘涓嶈兘鐢╨鎴朙鍚庣紑鏉ヨ〃紺烘墿灞曠殑嫻偣甯擱噺錛涗絾鏄紝 f 鍜孎 鏄悎娉曠殑錛堜絾浼氳蹇界暐錛夈備笅闈㈡槸涓浜涗緥瀛愶細

        const float P1 = -3.14f; // Integer & fraction, with suffix
        const float P2 = +3.1e-3; // Integer, fraction, and exponent
        const float P3 = .1; // Fraction part only
        const float P4 = 1.; // Integer part only
        const float P5 = .9E5; // Fraction part and exponent
        const float P6 = 5e2; // Integer part and exponent
        

      • 嫻偣鐩存帴閲忓繀欏昏惤鍦ㄥ叾甯擱噺綾誨瀷錛坒loat 鎴杁ouble錛夌殑鑼冨洿鍐咃紱鍚﹀垯緙栬瘧鍣ㄤ細鍙戝嚭璇婃柇璀﹀憡銆?

      • 涓茬洿鎺ラ噺鏀寔涓嶤++ 鐩稿悓鐨勮漿涔夊簭鍒椼備笅闈㈡槸涓浜涗緥瀛愶細

        const string AnOrdinaryString = "Hello World!";
        const string DoubleQuote = "\"";
        const string TwoSingleQuotes = "'\'"; // ' and \' are OK
        const string Newline = "\n";
        const string CarriageReturn = "\r";
        const string HorizontalTab = "\t";
        const string VerticalTab = "\v";
        const string FormFeed = "\f";
        const string Alert = "\a";
        const string Backspace = "\b";
        const string QuestionMark = "\?";
        const string Backslash = "\\";
        70 Slice 璇█
        const string OctalEscape = "\007"; // Same as \a
        const string HexEscape = "\x07"; // Ditto
        const string UniversalCharName = "\u03A9"; // Greek Omega
        鍜屽湪 C++ 閲屼竴鏍鳳紝鐩擱偦鐨勪覆鐩存帴閲忎細榪炴帴璧鋒潵錛?
        const string MSG1 = "Hello World!";
        const string MSG2 = "Hello" " " "World!"; // Same message
        /*
        * Escape sequences are processed before concatenation,
        * so the string below contains two characters,
        * '\xa' and 'c'.
        */
        const string S = "\xa" "c";
        

        [娉ㄦ剰] 娉ㄦ剰
        Slice 娌℃湁null 涓茬殑姒傚康
        const string nullString = 0; // Illegal!
        
        null 涓插湪Slice 閲屾牴鏈笉瀛樺湪錛屽洜姝わ紝鍦↖ce 騫沖彴鐨勪換浣曞湴鏂瑰畠閮戒笉鑳界敤浣滃悎娉曠殑涓插箋傝繖涓鍐沖畾鐨勫師鍥犳槸錛?null 涓插湪璁稿緙栫▼璇█閲屼笉瀛樺湪

鎺ュ彛銆佹搷浣滐紝浠ュ強寮傚父

瑙佹墜鍐?.......鎶勪功濂界瘡.........



]]>
杞澆:瀛︿範ICE 3.0--鍒濊浠g爜http://www.shnenglu.com/klsmlzm/archive/2005/12/13/1711.html鐗電墰鏁f鐗電墰鏁fTue, 13 Dec 2005 03:58:00 GMThttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1711.htmlhttp://www.shnenglu.com/klsmlzm/comments/1711.htmlhttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1711.html#Feedback0http://www.shnenglu.com/klsmlzm/comments/commentRss/1711.htmlhttp://www.shnenglu.com/klsmlzm/services/trackbacks/1711.html

鍒濊浠g爜

榪欎竴鑺傚ぇ閮ㄥ垎鍐呭鏁寸悊鑷狪CE涓枃鎵嬪唽錛屽湪榪欓噷鎴戠壒鍒劅璋㈤┈緇磋揪鍚屽織鐨勭炕璇戠粰鎴戜滑鐨勫涔犲甫鏉ヤ簡鏂逛究銆?

璇繪湇鍔$浠g爜

鏂囦歡server.cpp. 

#include <Ice/Ice.h> 		
#include "../print.h"
using namespace std;
using namespace Demo;

//鎯緥錛岀敤鍚庣紑I 琛ㄧず榪欎釜綾誨疄鐜頒竴涓帴鍙?
class PrinterI : public Printer {
public:
	virtual void printString(const string& s, const Ice::Current&);
};	 
/*
鎵撳紑print.h錛岀湅鐪婸rinterI鐖剁被鐨勫畾涔?

namespace Demo {
class Printer : virtual public Ice::Object {
public:

//綰櫄鍑芥暟錛屼笉鑳藉疄渚嬪寲
virtual void printString(const std::string&,
//絎簩涓弬鏁版湁緙虹渷鍊鹼紝瀹炵幇涓彲浠ヤ笉浣跨敤
const Ice::Current&= Ice::Current()) = 0;
};
};
*/

void PrinterI::printString(const string& s, const Ice::Current&)
{
	cout << s << endl;
}

int  main(int argc, char* argv[])
{	
	//紼嬪簭鐨勯鍑烘椂鐨勭姸鎬侊紝灝辨槸鍚︽垚鍔熸墽琛?
	int status = 0; 

	 //鏉ュ寘鍚獻ce run time 鐨勪富鍙ユ焺	(main handle)
	Ice::CommunicatorPtr ic;

	try {
	//鍒濆鍖朓ce run time 錛坅rgc鍜宎rgv鏄痳un time鍛戒護鍙傛暟錛?
	//灝辮繖涓緥瀛愯岃█錛屾湇鍔″櫒涓嶉渶瑕佷換浣曞懡浠よ鍙傛暟錛夈?
    //initialize 榪斿洖涓涓寚鍚慖ce::Communicator瀵硅薄鐨勬櫤鑳芥寚閽堬紝
	//榪欎釜鎸囬拡鏄疘ce run time 鐨勪富鍙ユ焺銆?
		ic = Ice::initialize(argc, argv);
	 
	 //璋冪敤Communicator 瀹炰緥涓婄殑createObjectAdapterWithEndpoints錛?
	 //鍒涘緩涓涓璞¢傞厤鍣?姣斿錛氱綉鍗″氨鏄竴縐嶉傞厤鍣?銆?
	 //鍙傛暟鏄?SimplePrinterAdapter" 錛堥傞厤鍣ㄧ殑鍚嶅瓧錛?
	 //鍜?default -p 10000"(鐢ㄧ己鐪佸崗璁紙TCP/IP錛?渚﹀惉绔彛10000 鐨勮姹傘?
	 //鏄劇劧錛屽湪搴旂敤涓‖緙栫爜瀵硅薄鏍囪瘑鍜岀鍙e彿錛屾槸涓縐嶇碂緋曠殑鍋氭硶錛?
	 //浣嗗畠鐩墠寰堟湁鏁堬紱鎴戜滑灝嗗湪浠ュ悗鐪嬪埌鍦ㄦ灦鏋勪笂鏇村姞鍚堢悊鐨勫仛娉曘?
		Ice::ObjectAdapterPtr adapter
			= ic->createObjectAdapterWithEndpoints(
			"SimplePrinterAdapter", "default -p 10000");

	  //鏈嶅姟鍣ㄧrun time 宸茬粡鍒濆鍖?瀹炰緥鍖栦竴涓狿rinterI 瀵硅薄錛?
	  //涓烘垜浠殑Printer 鎺ュ彛鍒涘緩涓涓猻ervant錛坰erv 鏈嶅姟錛?ant浜?鑳屼竴涓嬪崟璇嶏級銆?
		Ice::ObjectPtr object = new PrinterI;

	  //鎴戜滑璋冪敤閫傞厤鍣ㄧ殑add錛屽憡璇夊畠鏈変簡涓涓柊鐨剆ervant 錛?
	  //浼犵粰add 鐨勫弬鏁版槸鍒氭墠瀹炰緥鍖栫殑servant錛屽啀鍔犱笂涓涓爣璇嗙銆?
	  //鍦ㄨ繖閲岋紝"SimplePrinter" 涓叉槸servant 鐨勫悕瀛?
	  //錛堝鏋滄垜浠湁澶氫釜鎵撳嵃鏈猴紝姣忎釜鎵撳嵃鏈洪兘鍙互鏈変笉鍚岀殑鍚嶅瓧錛?
	  //鏇存紜殑璇存硶鏄紝閮芥湁涓嶅悓鐨勫璞℃爣璇嗭級銆?
		adapter->add(object,
			Ice::stringToIdentity("SimplePrinter"));

		//璋冪敤閫傞厤鍣ㄧ殑activate 鏂規硶嬋媧婚傞厤鍣?
		//錛堥傞厤鍣ㄤ竴寮濮嬫槸鍦ㄦ殏鍋滐紙holding錛夌姸鎬佸垱寤虹殑錛?
		//榪欑鍋氭硶鍦ㄤ笅闈㈣繖鏍風殑鎯呭喌涓嬪緢鏈夌敤錛?
		//鎴戜滑鏈夊涓猻ervant錛屽畠浠叡浜悓涓涓傞厤鍣紝
		//鑰屽湪鎵鏈塻ervant瀹炰緥鍖栦箣鍓嶆垜浠笉鎯沖鐞嗚姹傦級銆?
		//涓鏃﹂傞厤鍣ㄨ嬋媧伙紝鏈嶅姟鍣ㄥ氨浼氬紑濮嬪鐞嗘潵鑷鎴風殑璇鋒眰銆?
		adapter->activate();

		//鏈鍚庯紝鎴戜滑璋冪敤waitForShutdown銆?
		//榪欎釜鏂規硶鎸傝搗鍙戝嚭璋冪敤鐨勭嚎紼嬬洿鍒版湇鍔″櫒瀹炵幇緇堟
		//鈥斺旀垨鑰呮槸閫氳繃鍙戝嚭涓涓皟鐢ㄥ叧闂璻un time錛?
		ic->waitForShutdown();
	} 
	catch (const Ice::Exception& e) {
			cerr << e << endl;
		status = 1;
	} catch (const char* msg) {
		cerr << msg << endl;
		status = 1;
	}
	if (ic) {
		try {

		//蹇呴』璋冪敤Communicator::destroy緇撴潫Ice run time銆?
		//destroy 浼氱瓑寰呬換浣曡繕鍦ㄨ繍琛岀殑鎿嶄綔璋冪敤瀹屾垚銆?
		//姝ゅ錛?destroy 榪樹細紜繚浠諱綍榪樻湭瀹屾垚鐨勭嚎紼嬮兘寰椾互姹囧悎錛坖oined錛夛紝
		//騫舵敹鍥炰竴浜涙搷浣滅郴緇熻祫婧愶紝姣斿鏂囦歡鎻忚堪絎﹀拰鍐呭瓨銆?
		//鍐充笉瑕佽浣犵殑main 鍑芥暟涓嶈皟鐢╠estroy 灝辯粓姝?
		//鍚﹀垯錛屽悗鏋滄棤娉曟兂璞°?
			ic->destroy();

		} catch (const Ice::Exception& e) {
			cerr << e << endl;
			status = 1;
		}
	}
	return status;
}

娉ㄦ剰錛屽敖綆′互涓婄殑浠g爜涓嶇畻灝戯紝浣嗗畠浠鎵鏈夌殑鏈嶅姟鍣ㄩ兘鏄竴鏍風殑銆備綘鍙互鎶婅繖浜涗唬鐮佹斁鍦ㄤ竴涓緟鍔╃被閲岋紝鐒跺悗灝辨棤闇鍐嶄負瀹冭垂蹇冧簡錛圛ce 鎻愪緵浜嗚繖鏍風殑杈呭姪綾伙紝鍙綔Ice::Application錛屽弬瑙?10.3.1 鑺傦級 銆傚氨瀹為檯鐨勫簲鐢ㄤ唬鐮佽岃█錛屾湇鍔″櫒鍙湁鍑犺浠g爜錛氬叚琛屼唬鐮佸畾涔塒rinterI 綾伙紝鍐嶅姞涓婁笁2 琛屼唬鐮佸疄渚嬪寲涓涓狿rinterI 瀵硅薄錛屽茍鍚戝璞¢傞厤鍣ㄦ敞鍐屽畠銆?

璇誨鎴風浠g爜

鏂囦歡client.cpp. 

#include <Ice/Ice.h>
#include "..\print.h"
using namespace std;
using namespace Demo;
int main(int argc, char* argv[])
{
	int status = 0;
	Ice::CommunicatorPtr ic;
	try {
		ic = Ice::initialize(argc, argv);

		//stringToProxy 榪斿洖鐨勪唬鐞嗭紙Proxy錛夌被鍨嬫槸Ice::ObjectPrx錛?
		//榪欑綾誨瀷浣嶄簬鎺ュ彛鍜岀被鐨勭戶鎵挎爲鐨勬牴閮紙鎺ュ彛鐨勫熀綾伙級銆?
		 Ice::ObjectPrx base 
		=ic->stringToProxy(	"SimplePrinter:default -p 10000");

		//浣嗚瀹為檯瑕佷笌鎴戜滑鐨勬墦鍗版満浜よ皥錛?
		//鎴戜滑闇瑕佺殑鏄疨rinter 鎺ュ彛銆佷笉鏄疧bject 鎺ュ彛鐨勪唬鐞嗐?
		//涓烘錛岄渶瑕佽皟鐢≒rinterPrx::checkedCast 榪涜鍚戜笅杞崲錛堝悜涓嬭漿鍨嬶級銆?
		//榪欎釜鏂規硶浼氬彂閫佷竴鏉℃秷鎭粰鏈嶅姟鍣紝
		//璇㈤棶鈥滆繖鏄疨rinter 鎺ュ彛鐨勪唬鐞嗗悧錛熲?
		//濡傛灉鍥炵瓟鈥滄槸鈥濓紝灝變細榪斿洖Printer 鐨勪竴涓唬鐞嗭紱
		//濡傛灉浠g悊浠h〃鐨勬槸鍏朵粬綾誨瀷鐨勬帴鍙o紝榪斿洖涓涓┖浠g悊
		PrinterPrx printer = PrinterPrx::checkedCast(base);
		
		//嫻嬭瘯鍚戜笅杞瀷鏄惁鎴愬姛錛岃嫢涓嶆垚鍔燂紝灝辨姏鍑哄嚭閿欐秷鎭茍緇堟瀹㈡埛銆?
		if (!printer) 	throw "Invalid proxy";

		//鐜板湪錛屾垜浠湪鎴戜滑鐨勫湴鍧絀洪棿閲屾湁浜嗕竴涓縺媧葷殑浠g悊錛?
		//鍙互璋冪敤printString 鏂規硶錛?
		//鎶婁韓瑾夊凡涔呯殑 "Hello World!" 涓蹭紶緇欏畠銆?
		//鏈嶅姟鍣ㄤ細鍦ㄥ畠鐨勭粓绔笂鎵撳嵃榪欎釜涓層?
		printer->printString("Hello World!");
	}
	catch (const Ice::Exception& ex) {
		cerr << ex << endl;
		status = 1;
	} catch (const char* msg) {
		cerr << msg << endl;
		status = 1;
	}
	if (ic)
		ic->destroy();
	return status;
}

濡傛灉鍑虹幇浠諱綍閿欒錛屽鎴蜂細鎵撳嵃涓鏉″嚭閿欐秷鎭備緥濡傦紝濡傛灉鎴戜滑娌℃湁鍏堝惎鍔ㄦ湇鍔″櫒灝辮繍琛屽鎴鳳紝鎴戜滑浼氬緱鍒幫細

Network.cpp:471: Ice::ConnectFailedException:
connect failed: Connection refused

(鐢變簬windows涓嬬殑鍛戒護琛岀獥鍙e湪鍑洪敊鍚庝細涓闂氨娑堝け錛屼笉榪囨垜浠彲浠ュ湪client.cpp鐨刴ain鍑芥暟鐨剅eturn status;涔嬪墠鍔犱笂system("PAUSE");鐒跺悗鍐嶅湪VS2003.net涓妸client璁劇疆涓哄惎鍔ㄩ」鐩紝閲嶆柊緙栬瘧錛岃繍琛屻侽K錛屽彲浠ョ湅鍒扮粨鏋滀簡銆?



]]>
杞澆:瀛︿範ICE 3.0--鍑嗗宸ヤ綔http://www.shnenglu.com/klsmlzm/archive/2005/12/13/1710.html鐗電墰鏁f鐗電墰鏁fTue, 13 Dec 2005 03:56:00 GMThttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1710.htmlhttp://www.shnenglu.com/klsmlzm/comments/1710.htmlhttp://www.shnenglu.com/klsmlzm/archive/2005/12/13/1710.html#Feedback5http://www.shnenglu.com/klsmlzm/comments/commentRss/1710.htmlhttp://www.shnenglu.com/klsmlzm/services/trackbacks/1710.html

鍑嗗宸ヤ綔

鎸夌収鏌愪漢鐨勮娉曪細璺ㄥ鉤鍙扮殑C錛嬶紜緗戠粶緙栫▼ICE鎵嶆槸鐜嬮亾銆備簬鏄紝鎴戝涔營CE銆?

ICE鎵嶅嚭鏉ヤ袱騫達紝鏄滀竴縐嶇幇浠g殑闈㈠悜瀵硅薄涓棿浠訛紝鍙敤浜庢浛浠e儚CORBA鎴朇OM/DCOM/COM+榪欐牱鐨勪腑闂翠歡銆傚湪鏄撲簬瀛︿範鐨勫悓鏃訛紝瀹冧負鍚勭鏈夌潃鑻涘埢鐨勬妧鏈姹傜殑搴旂敤鎻愪緵浜嗗己澶х殑緗戠粶鍩虹璁炬柦銆傗滻ce 3.0 宸插疄鐜板C++, Java, Python, PHP, C# 鍙?Visual Basic 鐨勬敮鎸併?

榪欓噷鎴戝氨涓嶅璇翠簡,澶у鍙互鍙傝冭繖綃囨枃绔狅細銆婂弽鍙涗箣鍐幫細Internet Communications Engine 銆嬨傚ぇ瀹跺彲浠ヤ笅杞界殑ICE鐨勫畼鏂瑰弬鑰冩墜鍐岋紝鏈変腑鏂囩増錛屼笉榪囨槸1.3.0鐗? 鑻辨枃鐨勬槸3.0鐗堛?

ICE鏄紑婧愮殑錛屽ぇ瀹跺彲浠ヤ粠婧愪唬鐮佸紑濮嬬紪璇戯紝涓嶈繃杈冨鏉傦紝騫稿ソ鏈塨inary鐗堟湰錛屾瘮濡傛垜灝辨槸涓嬭澆鐨刅S2003.NET鐨勫畨瑁呭寘銆傚畨瑁呭畬鎴愪箣鍚庢寜鐓у畨瑁呯洰褰曚笅鐨凴eadme瀵笽DE榪涜涓涓嬮厤緗紝姣斿VC7.1灝辨槸鎶奿ce鐨刬nclude鍔犲叆VC7.1鐨勫紩鐢ㄦ枃浠剁洰褰?鎶奿ce鐨刲ib鐩綍鍔犲叆VC7.1鐨勫簱鏂囦歡鐩綍銆傜劧鍚庡啀鎶婂畨瑁呯洰褰曚笅鐨刡in鏂囦歡澶規坊鍔犲埌緋葷粺鐨勭幆澧冨彉閲廝ath涓紝鏈鍚庯紝鎶奲in鏂囦歡澶逛笅鐨勬墍鏈塂LL鏂囦歡閮紺opy鍒癢indows瀹夎鐩綍涓嬬殑System32鏂囦歡澶逛笅錛坵in98涓嬫槸System鏂囦歡澶癸紵錛夈?

ICE鑷畾涔変簡涓縐峉LICE璇█錛岀洰鐨勬槸瀹氫箟鎺ュ彛錛屼綔鐢ㄤ富瑕佸簲璇ユ槸淇濇寔瀵硅薄璋冪敤鎴栬呮暟鎹紶杈撴椂鐨勮璦鏃犲叧鎬с?

寮鍙戜竴涓狪CE搴旂敤紼嬪簭鍙互鍒嗕負涓夋:

  1. 鍐欎竴涓猄lice瀹氫箟, 騫朵笖緙栬瘧瀹?/P>

  2. 鍐欐湇鍔$, 騫剁紪璇戝畠

  3. 鍐欏鎴風, 騫剁紪璇戝畠

OK錛屽啓涓涓皬紼嬪簭錛屽疄鐜板鎴峰彂閫佽鎵撳嵃鐨勬枃鏈粰鏈嶅姟鍣紝鍐嶇敱鏈嶅姟鍣ㄦ妸鏂囨湰鍙戠粰鎵撳嵃鏈猴紙榪欓噷鎴戜滑鐢ㄥ睆騫曟樉紺烘浛浠o級,榪欓噷瀵逛唬鐮佽В璇昏瑙佷笅涓绔狅紝榪欓噷涓嶅璇淬?

  1. 鍐欎竴涓猄lice瀹氫箟, 騫朵笖緙栬瘧瀹冿細

    鏂囦歡Printer.ice. 

    module Demo {
    interface Printer {
    	void printString(string s);
    	};
    };
    

    榪欎釜鏂囦歡寰堢畝鍗? 浣嗛渶瑕佹敞鎰? 鍦ㄥ尯鍒嗗ぇ灝忓啓鐨勭郴緇熶笂, 鎵╁睍鍚嶄竴瀹氭槸灝忓啓.

    緙栬瘧涔熷緢綆鍗?棣栧厛紜浣犲凡灝嗕綘鐨刡in鐩綍鍔犲埌緋葷粺鐨勭幆澧冨彉閲廝ath涓?鐒跺悗鎶婁笂闈㈣繖涓墖鏂繚瀛樻垚Printer.ice, 鏈鍚庢墽琛宻lice2cpp Printer.ice, 鎵ц鍚庣殑緇撴灉搴旇鏄嚜鍔ㄧ敓鎴愪簡printer.h鍜宲rinter.cpp.

  2. 鍐欐湇鍔$, 騫剁紪璇戝畠

    鏂囦歡server.cpp. 

    #include <Ice/Ice.h> 
    #include "../print.h"
    using namespace std;
    using namespace Demo;
    class PrinterI : public Printer {
    public:
    	virtual void printString(const string& s,const Ice::Current&);
    };
    void PrinterI::printString(const string& s, const Ice::Current&)
    {
    	cout << s << endl;
    }
    int  main(int argc, char* argv[])
    {
    	int status = 0;
    	Ice::CommunicatorPtr ic;
    	try {
    		ic = Ice::initialize(argc, argv);
    		Ice::ObjectAdapterPtr adapter
    			= ic->createObjectAdapterWithEndpoints(
    			"SimplePrinterAdapter", "default -p 10000");
    		Ice::ObjectPtr object = new PrinterI;
    		adapter->add(object,
    			Ice::stringToIdentity("SimplePrinter"));
    		adapter->activate();
    		ic->waitForShutdown();
    	} catch (const Ice::Exception& e) {
    			cerr << e << endl;
    		status = 1;
    	} catch (const char* msg) {
    		cerr << msg << endl;
    		status = 1;
    	}
    	if (ic) {
    		try {
    			ic->destroy();
    		} catch (const Ice::Exception& e) {
    			cerr << e << endl;
    			status = 1;
    		}
    	}
    	return status;
    }
    

    浠S2003鐨勯厤緗負渚?

    1. 鎶奿ce鐨刬nclude鍔犲叆VC7.1鐨勫紩鐢ㄦ枃浠剁洰褰?鎶奿ce鐨刲ib鐩綍鍔犲叆VC7.1鐨勫簱鏂囦歡鐩綍銆傜劧鍚庡啀鎶婂畨瑁呯洰褰曚笅鐨刡in鏂囦歡澶規坊鍔犲埌緋葷粺鐨勭幆澧冨彉閲廝ath涓紝鏈鍚庯紝鎶奲in鏂囦歡澶逛笅鐨勬墍鏈塂LL鏂囦歡閮紺opy鍒癢indows瀹夎鐩綍涓嬬殑System32鏂囦歡澶逛笅錛坵in98涓嬫槸System鏂囦歡澶癸紵錛夛紙褰撶劧錛孌LL鏂囦歡鐨勯棶棰樹篃鍙互閫氳繃淇敼鐜鍙橀噺鏉ヨВ鍐籌紝涓嶈繃鏄偅涓彉閲忓憿錛焀ho can tell me?錛?

    2. 鏂板緩涓涓狢錛嬶紜鐨刉in32鐨勫懡浠ゅ彴鎺у埗紼嬪簭錛屽茍涓旇緗負絀洪」鐩紝 鎶妔erver.cpp, printer.cpp鍜宲rinter.h鍔犲叆榪欎釜欏圭洰錛坧rinter.cpp鍜宲rinter.h鏀懼湪欏圭洰鐨勭洰褰曠殑澶栦竴灞傜洰褰曪級

    3. 欏圭洰錛嶃嬪睘鎬э紞銆婥/C++ -銆嬩唬鐮佺敓鎴愶紞銆嬭繍琛屾椂搴擄紞銆?MD(realse鐗?鎴?MDd(debug鐗堬級

      欏圭洰錛嶃嬮厤緗睘鎬?銆婥/C++-銆嬭璦-銆嬪惎鐢ㄨ繍琛屾椂綾誨瀷淇℃伅/GR 寮鍚?

      璁劇疆錛氶」鐩紞銆嬪睘鎬э紞銆嬮摼鎺ュ櫒錛嶃嬭緭鍏ワ紞銆嬪姞鍏ced.lib iceutild.lib錛屾澶勪竴瀹氳鎶妑ealse搴撳拰debug搴撳垎娓? debug搴撳悗鏈変釜d

    4. 淇敼printer.cpp涓殑#include <printer.h>涓?include "printer.h"

    5. OK,緙栬瘧

  3. 鍐欏鎴風錛屽茍緙栬瘧瀹?/P>

    鏂囦歡client.cpp. 

    #include <Ice/Ice.h>
    #include "..\print.h"
    using namespace std;
    using namespace Demo;
    int main(int argc, char* argv[])
    {
    	int status = 0;
    	Ice::CommunicatorPtr ic;
    	try {
    		ic = Ice::initialize(argc, argv);
    		Ice::ObjectPrx base = ic->stringToProxy(
    			"SimplePrinter:default -p 10000");
    		PrinterPrx printer = PrinterPrx::checkedCast(base);
    		if (!printer)
    			throw "Invalid proxy";
    		printer->printString("Hello World!");
    	} catch (const Ice::Exception& ex) {
    		cerr << ex << endl;
    		status = 1;
    	} catch (const char* msg) {
    		cerr << msg << endl;
    		status = 1;
    	}
    	if (ic)
    		ic->destroy();
    	return status;
    }
    

    娣誨姞涓涓柊欏圭洰鍒板綋鍓嶈В鍐蟲柟妗堬紝鎸夌収涓婇潰鐨勬柟娉曪紝瀵筩lient鍐嶄竴嬈¤繘琛岃緗?/P>

    鍦ㄨВ鍐蟲柟妗堢鐞嗗櫒鐨勮В鍐蟲柟妗堜笂鐐瑰嚮鍙抽敭錛岄夋嫨鎵圭敓鎴怐ebug鐗堟湰錛岀劧鍒扮敤璧勬簮綆$悊鍣ㄥ埌涓や釜瑙e喅鏂規鐨勭洰褰曚笅鐨凞ebug鏂囦歡澶逛腑鎵ц鐢熶駭鐨勫彲鎵ц鏂囦歡銆傚厛榪愯server.exe, 鐒跺悗榪愯client.exe, 鍝堝搱, 鏄笉鏄湪server.exe鐨勭獥鍙i噷鍑虹幇浜咹ello World!錛堣繍琛屼竴嬈lient.exe錛屽嚭鐜頒竴鏉★級

 

鏂囩珷婧愬湴鍧:http://enjoylanguage.sourceforge.net/%5Bxhtml_chunk_sourceForge%5D/ch02.html



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产亚洲精品久久久久久| 欧美激情国产日韩| 依依成人综合视频| 黄色亚洲精品| 在线播放国产一区中文字幕剧情欧美| 国产精品视频午夜| 国产欧美一区二区三区在线看蜜臀| 欧美日韩日本视频| 欧美日韩亚洲精品内裤| 欧美网站大全在线观看| 国产精品日本| 好看的亚洲午夜视频在线| 亚洲国产成人久久综合一区| 亚洲精品极品| 亚洲一区二区3| 久久gogo国模裸体人体| 老司机精品导航| 欧美华人在线视频| 亚洲调教视频在线观看| 欧美一级二区| 欧美xart系列在线观看| 欧美日韩成人综合在线一区二区| 国产精品xnxxcom| 国产自产女人91一区在线观看| 亚洲国产一成人久久精品| 亚洲特级片在线| 麻豆av一区二区三区| 99re视频这里只有精品| 亚洲欧美日韩视频一区| 免费在线国产精品| 国产麻豆精品视频| 99pao成人国产永久免费视频| 午夜精品久久99蜜桃的功能介绍| 久久综合国产精品| 一区二区三区精品| 免费观看在线综合| 国产九九精品视频| 99国产精品久久久久久久久久| 欧美专区在线播放| 亚洲美女在线一区| 久久资源av| 国产亚洲视频在线观看| 亚洲一区二区三区三| 欧美xxxx在线观看| 在线观看中文字幕不卡| 欧美日韩在线观看一区二区| 国产亚洲一本大道中文在线| 亚洲午夜国产一区99re久久 | 国产精品福利片| 尤物九九久久国产精品的特点| 亚洲午夜精品网| 亚洲国产高清自拍| 亚洲欧美久久| 国产精品99一区| 亚洲午夜高清视频| 日韩一区二区福利| 欧美另类视频| 99国产精品久久久久久久成人热| 麻豆成人在线| 久久久亚洲国产美女国产盗摄| 国产精品视频专区| 性18欧美另类| 亚洲制服丝袜在线| 国产精品私人影院| 久久国产手机看片| 性欧美video另类hd性玩具| 国产精品日韩在线播放| 亚洲综合视频在线| av成人手机在线| 欧美性片在线观看| 亚洲欧美日韩精品久久| 亚洲少妇在线| 国产欧美日韩在线视频| 久热精品视频在线观看一区| 久久久爽爽爽美女图片| 亚洲国产精品久久久久秋霞蜜臀 | 欧美视频一区| 午夜精品视频在线观看| 欧美影院视频| 亚洲三级视频| 亚洲一区精品电影| 在线不卡欧美| 亚洲美女黄色片| 国产乱肥老妇国产一区二| 免费久久99精品国产自| 欧美精品一卡| 久久精品国产第一区二区三区最新章节 | 亚洲一区久久久| 亚洲视频在线观看网站| 国产精品久久久久91| 欧美日本精品| 麻豆精品网站| 亚洲日本欧美日韩高观看| 亚洲第一网站| 欧美日韩另类一区| 午夜精品福利视频| 久久精品av麻豆的观看方式| 国产一区二区福利| 欧美国产在线观看| 欧美国产综合| 亚洲在线1234| 久久久7777| 一本大道久久精品懂色aⅴ| 噜噜噜91成人网| 国产精品久久久久aaaa九色| 久久久精品国产免费观看同学| 久久久久九九视频| 中文国产一区| 久久嫩草精品久久久久| 一区二区欧美亚洲| 最新日韩在线| 亚洲国产一区二区视频| 99国产精品久久久久久久| 国产精品欧美久久久久无广告| 老鸭窝毛片一区二区三区| 欧美视频手机在线| 欧美电影免费观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲欧洲精品一区二区| 亚洲一区国产视频| 亚洲人成在线观看网站高清| 亚洲视频在线观看视频| 91久久国产精品91久久性色| 国产精品99久久久久久宅男 | 美女视频一区免费观看| 欧美日精品一区视频| 欧美成人精品h版在线观看| 欧美日韩亚洲综合| 免播放器亚洲一区| 国产精品视频99| 91久久精品国产91性色tv| 国产一区二区剧情av在线| 洋洋av久久久久久久一区| 亚洲韩国精品一区| 久久精品视频在线播放| 久久综合网hezyo| 国产酒店精品激情| 中文精品视频| 精品不卡一区| 性欧美长视频| 性久久久久久| 国产毛片一区二区| 亚洲一区二区三区影院| 亚洲美女区一区| 欧美.日韩.国产.一区.二区| 久久久中精品2020中文| 国产一区二区电影在线观看 | 亚洲在线中文字幕| 亚洲欧美在线免费| 一区二区三区视频在线| 欧美一区国产二区| 夜久久久久久| 免费亚洲电影| 欧美11—12娇小xxxx| 国产一区二区三区黄视频| 亚洲欧美日韩在线| 亚洲一区在线免费观看| 欧美日韩综合网| 亚洲麻豆国产自偷在线| 午夜国产精品视频| 国产欧美综合在线| 久久久青草婷婷精品综合日韩| 久久国产精品久久国产精品| 狠狠色狠狠色综合日日tαg| 午夜欧美电影在线观看| 麻豆国产精品一区二区三区| 在线观看欧美激情| 欧美日韩国产一级片| 亚洲九九精品| 欧美影院在线播放| 国产在线不卡视频| 欧美成人网在线| 亚洲精品在线观看免费| 午夜视频精品| 国产欧美一区视频| 欧美福利电影网| a4yy欧美一区二区三区| 久久久精彩视频| 亚洲国产精品久久| 国产精品日产欧美久久久久| 亚洲女同精品视频| 亚洲国产精品一区二区久| 亚洲美女视频在线观看| 国产午夜精品理论片a级大结局| 久久精品2019中文字幕| 亚洲精品网址在线观看| 欧美亚洲一区| 影音先锋中文字幕一区| 欧美日韩在线另类| 一区二区三区不卡视频在线观看| 性色av一区二区三区在线观看 | 欧美日韩精品在线| 一区二区三区精品久久久| 欧美18av| 欧美亚洲一区在线| 在线中文字幕一区| 狠久久av成人天堂| 国产区精品在线观看| 毛片一区二区| 久久精品一区四区|