锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一线二线三线久久久,激情成人中文字幕,久久久噜久噜久久综合http://m.shnenglu.com/klsmlzm/浠楀墤璧板ぉ娑?/description>zh-cnSun, 16 Nov 2025 18:19:33 GMTSun, 16 Nov 2025 18:19:33 GMT60CVS鏈嶅姟鍣ㄧ殑鐩稿叧閰嶇疆鍙婁嬌鐢╗ Server of CVS Configure and Usage for linux]---娉?姝ゆ暀紼嬫槸"鐏北鍝?鎻愪緵鐨?-)http://m.shnenglu.com/klsmlzm/archive/2006/11/28/15737.html鐗電墰鏁f鐗電墰鏁fTue, 28 Nov 2006 08:18:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/11/28/15737.htmlhttp://m.shnenglu.com/klsmlzm/comments/15737.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/11/28/15737.html#Feedback3http://m.shnenglu.com/klsmlzm/comments/commentRss/15737.htmlhttp://m.shnenglu.com/klsmlzm/services/trackbacks/15737.html 涓銆佸畨瑁?/span>

1 銆?/span> linux 瀹夎濂藉悗宸茬粡瑁呭ソ浜?/span> cvs 錛屽彲鐢?/span> rpm -qa|grep cvs 鏌ョ湅銆?/span>

濡傛灉娌℃湁瀹夎浣犲彲浠ュ湪 Redhat 絎?/span> 2 寮犲厜鐩樹笂鎵懼埌錛屽彟澶栦綘涔熷彲浠ュ湪緗戜笂涓嬭澆鍒版渶鏂扮殑 rpm 鍖呫傚緢瀹規槗鎵撅紝鍏跺疄涓嶅瓨鍦ㄤ粈涔?/span> linux 鐗堟湰銆?/span>

2 銆佸垱寤?/span> cvs 浣跨敤鐨勭洰褰曪細 mkdir /home/mycvstest

3 銆佸垱寤?/span> cvs 浣跨敤鐨勭敤鎴峰拰緇?/span>

groupadd cvs

useradd -g cvs -G cvs 鈥揹 /home/mycvstest cvs

passwd cvs

4 銆佷慨鏀?/span> mycvstest 鐨勭敤鎴鳳細 chown -R cvs:cvs /home/mycvstest

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 chmod 755 /home/mycvstest

5 銆佸垏鎹㈢敤鎴鳳細 su cvs

6 銆佸垱寤烘簮鐮佷粨搴擄細 mkdir /home/mycvstest/drcls drclgw

7 銆佸垵濮嬪寲婧愮爜浠撳簱錛?/span> cvs -d /home/mycvstest/drcls init

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 cvs -d /home/mycvstest/drclgw init

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽chmod 755 /home/mycvstest/drcls drclgw

鍒濆鍖栧悗鍙互鍦ㄧ洰褰曚笅瑙佸埌鏂板鍔犵殑 CVSROOT 鐩綍錛?/span> cvs 鎵鏈夌殑鎺у埗淇℃伅閮藉湪榪欎釜鐩綍閲屻?/span>

8 銆侀鍥炲埌 root 鐢ㄦ埛錛屽緩绔?/span> CVS 鏈嶅姟鍚姩鏂囦歡錛?/span> CVS 浣跨敤 xinetd 鏂瑰紡鍚姩銆?/span>

vi /etc/xinetd.d/cvspserver

service cvspserver

{

disable = no

flags = REUSE

socket_type = stream

wait = no

user = root

server= /usr/bin/cvs

server_args= -f --allow-root=/home/mycvstest/drcls

--allow-root=/home/mycvstest/drclgw pserver

log_on_failure += USERID

}

娉細綰㈣壊鐨勫弬鏁板緢閲嶈錛岀敱浜?/span> xinetd 鐨?/span> server_args 闀垮害闄愬埗 , 褰撲綘鎯寵繍琛屽緢澶氱殑鍗曚釜浠撳簱鐨勬椂鍊?/span> ( 灝辨槸鏈夊緢澶氫釜妯″潡鏃訛紝姣斿 drcrgw), 浣嗗湪 server_args 涓棤娉曡緭鍏ヨ繖涔堝鍗曚釜鐨勪粨搴擄紝 鍙互閲囧彇浠ヤ笅鏂瑰紡瑙e喅錛堢幇鍦ㄥ疄楠屽 90 涓婂氨鐢ㄧ殑榪欑鏂瑰紡錛夛細

#> vi cvspserver

service cvspserver

{

聽聽聽聽聽聽聽 disable = no

聽聽聽聽聽聽聽 socket_type = stream

聽聽聽聽聽聽聽 wait = no

聽聽聽聽聽聽聽 user = root

聽聽聽聽聽聽聽 server = /usr/bin/cvs.run

聽聽聽聽聽聽聽 server_args =""

}

緙栧啓 cvs.run 鑴氭湰

vi /cvsroot/cvs.run

#!/bin/bash

/usr/bin/cvs -f

--allow-root=/home/mycvstest/drcls

--allow-root= /home/mycvstest/drclgw

pserver

chmod a+x cvs.run

9 銆佸姞鍏?/span> cvs 鏈嶅姟錛?/span>

#>vi /etc/services

cvspserver 2401/tcp #pserver cvs service

cvspserver 2401/udp #pserver cvs service

10 銆佸惎鍔?/span> cvs 鏈嶅姟錛?/span>

#> service xinetd restart

11 銆佹鏌?/span> cvspserver 鏈嶅姟鏄惁宸茬粡鍚姩錛?/span>

#> netstat -l |grep cvspserver

搴旇鏈夊涓嬬粨鏋滐細

tcp 0 0 *:cvspserver *:* LISTEN

浜屻佷嬌鐢ㄥ拰綆$悊

1 銆佸垱寤?/span> cvs 鐢ㄦ埛錛?/span>

cd /home/mycvstest/drcls/CVSROOT

htpasswd 鈥揷 passwd zhangcan (htpasswd 鍛戒護瑕佸畨瑁?/span> apache 鍚庢墠鏈夛紝姝ゅ懡浠ゅ垱寤轟竴涓?/span> passwd 鏂囦歡錛岄噷闈㈠唴瀹逛負鏂板緩 cvs 鐢ㄦ埛鐨勭敤鎴峰悕鍜屽瘑鐮?/span> )

vi passwd ( 鍦ㄦ柊寤虹殑鐢ㄦ埛鍚庢墜宸ュ姞鍏ョ敤鎴峰睘浜庣殑緇?/span> cvs)

渚嬪錛?/span> zhangcan:dgeagasdgasdr:cvs 钃濊壊瀛楃涓茶〃紺哄姞瀵嗗悗鐨勫瘑鐮併?/span>

2 銆佽祴浜堢敤鎴瘋鍐欐潈闄?/span>

鎵嬪伐鍦?/span> CVSROOT 鐩綍涓緩绔?/span> readers 鍜?/span> writers 鏂囦歡銆?/span> Readers 鏂囦歡涓殑鐢ㄦ埛鍙湁璇繪潈闄愶紝 writers 涓殑鐢ㄦ埛鍏鋒湁璇誨啓鏉冮檺錛屼竴琛屽彧鍐欎竴涓敤鎴峰悕銆?/span>

3 銆佺櫥褰?/span> cvs

鍦ㄥ鎴鋒満 Linux 涓嬮潰鐢ㄥ懡浠わ細

export CVSROOT=:pserver:zhangcan@192.168.100.197:/home/mycvstest/drcls

cvs login

4 銆佸悜婧愮爜浠撳簱涓鍏ユ簮鐮?/span>

棣栧厛榪涘叆浣犳湰鏈轟笂瀹夎婧愮爜鐨勭洰褰曪紝鐒跺悗浣跨敤浠ヤ笅鍛戒護錛?/span>

cvs import 鈥搈 鈥渢his is my soure code鈥?drcls NISEC test start

-m 琛ㄧず鍦?/span> cvs 鍘嗗彶鏂囦歡鏄劇ず鐨勬秷鎭紝 drclst 涓轟綘鎸囧畾鐨勬簮鐮佺洰褰曞悕錛?/span> NISEC 涓轟緵搴斿晢鏍囩錛?/span> test 涓哄彂琛屾爣絳撅紙榪欎袱欏瑰彲浠ヤ笉瑕侊級錛?/span> start 蹇呴』瑕併?/span>

5 銆?/span> checkout 鍑洪渶瑕佷慨鏀圭殑婧愪唬鐮?/span>

cvs co drcls 鍦ㄤ綘鐨勫綋鍓嶇洰褰曚笅浼氬彂鐜板浜嗕竴涓?/span> drcls 鐩綍錛岃淇敼鐨勬簮鐮侀兘鍦ㄩ噷闈?/span>

co 涓?/span> checkout 鐨勭畝鍐?/span>

6 銆佹彁浜や慨鏀?/span>

鍋囪鍒氭墠瀵?/span> readme 鏂囦歡榪涜浜嗕慨鏀癸紝鐜板湪鎻愪氦

cvs commit 鈥搈 鈥渕odify a few of wrong words鈥?span style="mso-spacerun: yes">聽 readme

鍛戒護鎵ц鍚庝細鎻愮ず鐗堟湰宸茬粡鏀逛負 1.2 銆?/span>

7 銆?/span> checkout 鍑轟互鍓嶇殑鐗堟湰

濡傛灉鎯蟲鍑轟互鍓嶇殑鐗堟湰鍙互鐢ㄤ互涓嬪懡浠わ細

cvs co 鈥搑 1.1 drcls/readme 鎴栬?/span> cvs 鈥揇 yesterday drcls/readme

8 銆佸垹闄ゆ枃浠?/span>

鑻ユ兂浠庢簮鐮佷粨搴撲腑鍒犻櫎 readme 鏂囦歡錛岄鍏堝簲鎶婂鎴鋒満宸ヤ綔鐩綍涓殑 readme 鏂囦歡鍒犻櫎錛岀劧鍚庝嬌鐢?/span> cvs 鐨勫垹闄ゅ懡浠わ紝鏈鍚庢彁浜ゅ垹闄わ紝嫻佺▼濡備笅錛?/span>

rm readme

cvs rm readme

cvs commit 鈥搈 鈥?/span> 鐜板湪涓嶉渶瑕佽繖涓?/span> readme 鏂囦歡 鈥?span style="mso-spacerun: yes">聽 readme

濡傛灉緋葷粺綾諱技閿欒錛?/span> cannot remove file `INSTALL' which has a numeric sticky tag of `1.1'

鍙互鐢ㄥ懡浠?/span> cvs update 鈥揂 readme 鍚庡啀鍒犻櫎鏂囦歡銆?/span>


浠ヤ笂涓虹伀灞卞摜鎻愪緵鐨?浠ヤ笅鏄垜娣誨姞鐨勯儴浠?
1.鍦╮eader鍜寃rites鏂囦歡涓坊鍔犱嬌鐢ㄧ敤鎴鋒椂瑕佹敞鎰?褰撳湪reader涓坊鍔犱簡鏌愪竴鍙鐢ㄦ埛鍚庡氨涓嶈鍦╳riters涓坊鍔犳鐢ㄦ埛,濡傛灉鍦ㄤ袱涓枃浠朵腑閮芥坊鍔犲悓涓鐢ㄦ埛鐨勮瘽,鍦ㄤ嬌鐢╟vs鏃?CVS鏈嶅姟鍣ㄤ細鎶婃鐢ㄦ埛褰撳仛鍙鐢ㄦ埛鐪嬪緟,褰撲嬌鐢ㄤ竴浜涘懡浠ゅimport鏃朵細浜х敓鏉冮檺闂,浠ヤ笅鏄痩inux鍏充簬姝ら棶棰樼殑璇存槑:
/* This command has the potential to modify the repository, so
聽 聽* we check if the user have permission to do that.
聽 聽*
聽 聽* (Only relevant for remote users -- local users can do
聽 聽* whatever normal Unix file permissions allow them to do.)
聽 聽*
聽 聽* The decision method:
聽 聽*
聽 聽*聽 聽 If $CVSROOT/CVSADMROOT_READERS exists and user is listed
聽 聽*聽 聽 in it, then read-only access for user.
聽 聽*
聽 聽*聽 聽 Or if $CVSROOT/CVSADMROOT_WRITERS exists and user NOT
聽 聽*聽 聽 listed in it, then also read-only access for user.
聽 聽*
聽 聽*聽 聽 Else read-write access for user.
聽 聽*/



]]>
鍦╒C++6.0 SP6 涓嬮厤緗甀CE宸ョ▼[DEBUG鐗堟湰]--config ice project(debug) for vc++6.0 with sp6http://m.shnenglu.com/klsmlzm/archive/2006/09/18/12686.html鐗電墰鏁f鐗電墰鏁fMon, 18 Sep 2006 09:58:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/09/18/12686.htmlhttp://m.shnenglu.com/klsmlzm/comments/12686.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/09/18/12686.html#Feedback6http://m.shnenglu.com/klsmlzm/comments/commentRss/12686.htmlhttp://m.shnenglu.com/klsmlzm/services/trackbacks/12686.html鍒氬涔營CE鏃?鍦╒C++6.0涓嬮厤緗甀CE宸ョ▼綆鐩存槸涓伓姊?姝繪椿閰嶄笉鏉EBUG鐗堟湰鐨?寮鍙戝叏鍦≧ELEASE鐗堟湰涓?寰堢棝鑻?鏈榪戠爺絀朵簡涓?鎴愬姛鐨勯厤緗垚鍔熶簡,鏂規硶濡備笅:

1.Project Settings >> C/C++(Tab) >> Category:Code Generation >> User run-time library:Debug Multithreaded DLL

2.Project Settings >> C/C++(Tab) >> Category:Preprocessor >> Additional include directories:(鍦ㄦ欏逛腑濉叆涓涓偣".",琛ㄧず鏍圭洰褰?

3.Project Settings >> C/C++(Tab) >> Category:C++ Language >> 鍕鵑?Enable Run-Time Type Information(RTTI)"欏?br />
4.Project Settings >> Link(Tab) >> Category:General>>鍦?Object/library modules:"妗嗕腑鐨勬湭棣栧姞鍏ヤ袱涓寘"iced.lib"鍜?iceutild.lib"


榪欐牱,鏁翠釜ICE宸ョ▼鐨凞EBUG鐗堟湰灝卞緩绔嬪畬鎴愪簡.
浠ヤ笂鏂規硶鍦?VC++6.0 SP6 鍜?ICE3.0.0 涓嬮氳繃



]]>
LINUX涓嬬畝鍗曠殑緙栬瘧鍜屼嬌鐢ㄥ姩鎬侀摼鎺ュ簱[compile .so use c++ in linux]http://m.shnenglu.com/klsmlzm/archive/2006/04/21/6026.html鐗電墰鏁f鐗電墰鏁fFri, 21 Apr 2006 07:06:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/04/21/6026.htmlhttp://m.shnenglu.com/klsmlzm/comments/6026.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/04/21/6026.html#Feedback0http://m.shnenglu.com/klsmlzm/comments/commentRss/6026.htmlhttp://m.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鐨勫彲鎵ц鏂囦歡



]]>
C++緙栫▼涓紝鍒╃敤WINDOWS API鑾峰緱緋葷粺鐘舵佷俊鎭痆CPU鍗犵敤鐜囷紝紜洏浣跨敤鎯呭喌錛屽唴瀛樹嬌鐢ㄦ儏鍐礭http://m.shnenglu.com/klsmlzm/archive/2006/04/14/5522.html鐗電墰鏁f鐗電墰鏁fFri, 14 Apr 2006 03:35:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/04/14/5522.htmlhttp://m.shnenglu.com/klsmlzm/comments/5522.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/04/14/5522.html#Feedback3http://m.shnenglu.com/klsmlzm/comments/commentRss/5522.htmlhttp://m.shnenglu.com/klsmlzm/services/trackbacks/5522.html#include <Ice/Ice.h>
#include <iostream>
#include <GetWinSysState.h>
#include <Winbase.h>
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <string>
#include <direct.h>

#define SystemBasicInformation聽聽聽聽聽聽 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation聽聽聽聽聽聽聽 3

#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
//ICE棰勭紪璇戣鍙?/p>

#ifdef _DEBUG
#pragma comment(lib, "iced.lib")
#pragma comment(lib, "iceutild.lib")
#else
#pragma comment(lib, "ice.lib")
#pragma comment(lib, "iceutil.lib")
#endif

typedef struct
{
聽聽聽 DWORD聽聽 dwUnknown1;
聽聽聽 ULONG聽聽 uKeMaximumIncrement;
聽聽聽 ULONG聽聽 uPageSize;
聽聽聽 ULONG聽聽 uMmNumberOfPhysicalPages;
聽聽聽 ULONG聽聽 uMmLowestPhysicalPage;
聽聽聽 ULONG聽聽 uMmHighestPhysicalPage;
聽聽聽 ULONG聽聽 uAllocationGranularity;
聽聽聽 PVOID聽聽 pLowestUserAddress;
聽聽聽 PVOID聽聽 pMmHighestUserAddress;
聽聽聽 ULONG聽聽 uKeActiveProcessors;
聽聽聽 BYTE聽聽聽 bKeNumberProcessors;
聽聽聽 BYTE聽聽聽 bUnknown2;
聽聽聽 WORD聽聽聽 wUnknown3;
} SYSTEM_BASIC_INFORMATION;

typedef struct
{
聽聽聽 LARGE_INTEGER聽聽 liIdleTime;
聽聽聽 DWORD聽聽聽聽聽聽聽聽聽聽 dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;

typedef struct
{
聽聽聽 LARGE_INTEGER liKeBootTime;
聽聽聽 LARGE_INTEGER liKeSystemTime;
聽聽聽 LARGE_INTEGER liExpTimeZoneBias;
聽聽聽 ULONG聽聽聽聽聽聽聽聽 uCurrentTimeZoneId;
聽聽聽 DWORD聽聽聽聽聽聽聽聽 dwReserved;
} SYSTEM_TIME_INFORMATION;


// ntdll!NtQuerySystemInformation (NT specific!)
//
// The function copies the system information of the
// specified type into a buffer
//
// NTSYSAPI
// NTSTATUS
// NTAPI
// NtQuerySystemInformation(
//聽聽聽 IN UINT SystemInformationClass,聽聽聽 // information type
//聽聽聽 OUT PVOID SystemInformation,聽聽聽聽聽聽 // pointer to buffer
//聽聽聽 IN ULONG SystemInformationLength,聽 // buffer size in bytes
//聽聽聽 OUT PULONG ReturnLength OPTIONAL聽聽 // pointer to a 32-bit
//聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // variable that receives
//聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // the number of bytes
//聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // written to the buffer
// );
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);

PROCNTQSI NtQuerySystemInformation;

/*
聽 鍔熻兘:寰楀埌CPU浣跨敤鐘舵?br />聽 鍙傛暟:鏃?br />聽 榪斿洖鍊?鍐呭瓨鍗犵敤鐜?br />聽 浣滆?鐗電墰鏁f
*/
int GetCpuStat()
{
聽SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
聽聽聽 SYSTEM_TIME_INFORMATION聽聽聽聽聽聽聽 SysTimeInfo;
聽聽聽 SYSTEM_BASIC_INFORMATION聽聽聽聽聽聽 SysBaseInfo;
聽聽聽 double聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dbIdleTime;
聽聽聽 double聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 dbSystemTime;
聽聽聽 LONG聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 status;
聽聽聽 LARGE_INTEGER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 liOldIdleTime = {0,0};
聽聽聽 LARGE_INTEGER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 liOldSystemTime = {0,0};
聽int UsageCpu = 0;
聽聽聽 NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
聽聽GetModuleHandle("ntdll"),
聽聽"NtQuerySystemInformation"
聽聽);

聽聽聽 if (!NtQuerySystemInformation)
聽聽聽聽聽聽聽 return 0;

聽聽聽 status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
聽聽聽 if (status != NO_ERROR)
聽聽聽聽聽聽聽 return 0;
聽聽聽聽
聽for( int t = 0 ; t < 2 ; t++ )
聽聽聽 {
聽聽status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
聽聽聽聽聽聽聽 if (status!=NO_ERROR)
聽聽聽聽聽聽聽聽聽聽聽 return 0;
聽聽
聽聽聽聽聽聽聽 status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
聽聽聽聽聽聽聽 if (status != NO_ERROR)
聽聽聽聽聽聽聽聽聽聽聽 return 0;
聽聽
聽聽if (liOldIdleTime.QuadPart != 0)
聽聽{
聽聽聽聽聽聽聽聽聽聽聽 dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
聽聽聽聽聽聽聽聽聽聽聽 dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
聽聽聽
聽聽聽聽聽聽聽聽聽聽聽 dbIdleTime = dbIdleTime / dbSystemTime;
聽聽聽

聽聽聽聽聽聽聽聽聽聽聽 dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
聽聽聽UsageCpu = (int)dbIdleTime;

聽聽}
聽聽
聽聽聽聽聽聽聽 // store new CPU's idle and system time
聽聽聽聽聽聽聽 liOldIdleTime = SysPerfInfo.liIdleTime;
聽聽聽聽聽聽聽 liOldSystemTime = SysTimeInfo.liKeSystemTime;
聽聽
聽聽聽聽聽聽聽 // wait one second
聽聽聽聽聽聽聽 Sleep(500);
聽聽聽 }
聽return UsageCpu;

}


/*
聽 鍔熻兘:寰楀埌鍐呭瓨浣跨敤鐘舵?br />聽 鍙傛暟:鏃?br />聽 榪斿洖鍊?鍐呭瓨淇℃伅緇撴瀯浣揫鍖呮嫭鎬葷殑鐗╃悊鍐呭瓨,榪樺彲浣跨敤鍐呭瓨,铏氭嫙鍐呭瓨,鍗曚綅涓篕]
聽 浣滆?鐗電墰鏁f
*/
MemoryInf MemorySta()
{
聽MemoryInf tmp;//鍦↖CE SLICE閲屽畾涔夌殑淇℃伅緇撴瀯浣?br />聽MEMORYSTATUS memStatus;
聽GlobalMemoryStatus(&memStatus);
聽DWORD tom=memStatus.dwTotalPhys/1024;
聽DWORD mem=memStatus.dwAvailPhys/1024;
聽DWORD res=memStatus.dwAvailVirtual/1024;
聽tmp.TotalMem = (int)tom;
聽tmp.ValidMem = (int)mem;
聽tmp.VirtualMem = (int)res;
聽return tmp;
}


/*
聽鍔熻兘:寰楀埌紜洏浣跨敤鎯呭喌
聽鍙傛暟:鏃?br />聽榪斿洖鍊?紜洏淇℃伅緇撴瀯浣?br />聽浣滆?鐗電墰鏁f
*/
DiskInf GetDiskSta()
{
聽ULARGE_INTEGER FreeAvailable,TotalNum,TotalFreeNum;

聽char p[3];
聽bool b_flag;
聽DiskInf tmp;//ICE SLICE閲屽畾涔夌殑紜洏淇℃伅緇撴瀯浣?br />聽tmp.TotalSpace = 0;
聽tmp.FreeSpace = 0;
聽//寰楀埌鏈夋晥鐨勯┍鍔ㄥ櫒鍚?鍗崇洏絎?
聽for( int drive = 1; drive <= 26; drive++ )
聽{
聽聽if( !_chdrive( drive ) )
聽聽{
聽聽聽memset( p , 0 , sizeof(p));
聽聽聽p[0] = drive + 'A' - 1;
聽聽聽p[1] = ':';
聽聽聽p[2] = '\0';
聽聽聽b_flag = GetDiskFreeSpaceEx( p ,&FreeAvailable,&TotalNum,&TotalFreeNum );
聽聽聽if( b_flag )
聽聽聽{
聽聽聽聽tmp.TotalSpace += (int)(TotalNum.QuadPart/(1024*1024));
聽聽聽聽tmp.FreeSpace += (int)(FreeAvailable.QuadPart/(1024*1024));
聽聽聽}
聽聽}
聽}
聽return tmp;
}

int main()
{
聽聽聽return 1;
}



]]>
C++椋庝簯20杞?C++鍥句功浠嬬粛http://m.shnenglu.com/klsmlzm/archive/2006/02/28/3576.html鐗電墰鏁f鐗電墰鏁fTue, 28 Feb 2006 09:07:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/02/28/3576.htmlhttp://m.shnenglu.com/klsmlzm/comments/3576.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/02/28/3576.html#Feedback0http://m.shnenglu.com/klsmlzm/comments/commentRss/3576.htmlhttp://m.shnenglu.com/klsmlzm/services/trackbacks/3576.html鏂?CSDN 瀛熷博  杞澆鑷?005騫寸11鏈熴婄▼搴忓憳銆嬫潅蹇?/FONT>

涓嶇煡涓嶈錛?SPAN lang=EN>C++榪庢潵浜嗚嚜宸?SPAN lang=EN>20宀佺殑鐢熸棩銆?SPAN lang=EN>20騫存潵錛?SPAN lang=EN>C++浠庝竴涓疄楠屽璇█鎴愰暱涓鴻蔣浠朵駭涓氫竴嫻佷富瀵艱璦錛屽湪瀹為檯搴旂敤涓彇寰椾簡宸ㄥぇ鐨勬垚鍔燂紝鍚屾椂涔熷偓鐢熶簡澶ч噺涓烘妧鏈漢鍛樿崇啛鑳借鐨勭粡鍏告妧鏈憲浣滐紝姣斿Bjarne Stroustrup鐨勩?SPAN lang=EN>TC++PL銆嬪拰銆?SPAN lang=EN>D&E銆嬶紝Stan Lippman鐨勩?SPAN lang=EN>C++ Primer銆嬶紝Scott Meyers鐨勩?SPAN lang=EN>Effective C++銆嬶紝GoF鐨勩?SPAN lang=EN>Design Patterns銆嬶紝Andy Koenig鐨勩?SPAN lang=EN>Ruminations on C++銆嬶紝Herb Sutter鐨勩?SPAN lang=EN>Exceptional C++銆嬶紝Andrei Alexandrescu鐨勩?SPAN lang=EN>Modern C++ Design銆嬶紝Addison Wesley鐨勨?SPAN lang=EN>C++ in Depth鈥濈郴鍒楃瓑銆?SPAN lang=EN>C++棰嗗煙鐨勪竴浜涚粡鍏稿浘涔︿笉浣嗗浜?SPAN lang=EN>C++璇█鐨勫彂灞曡搗鍒頒簡宸ㄥぇ鐨勬帹鍔ㄤ綔鐢紝鑰屼笖瀵逛簬鍏朵粬鐩稿叧鎶鏈鍩熶篃璧峰埌浜嗘寚瀵煎拰淇冭繘浣滅敤銆備緥濡?SPAN lang=EN>Scott Meyers鐨勨?SPAN lang=EN>Effective緋誨垪鈥濓紝寮杈熶簡鎶鏈浘涔﹀啓浣滅殑鏂伴鏍鹼紝鑰屸?SPAN lang=EN>Design Patterns鈥濈殑褰卞搷錛屾洿鏄繙榪滆秴鍑?SPAN lang=EN>C++鐨勮寖鐣淬傝繖浜涚粡鍏哥殑濂戒功錛屽凡緇忔垚涓?SPAN lang=EN>C++杈夌厡鍘嗗彶鐨勪竴閮ㄥ垎鑰岃浜轟滑閾銆?SPAN lang=EN> 

20騫村悗鐨勪粖澶╋紝杞歡浜т笟鐨勮妯″拰鐜宸茬粡鍙戠敓浜嗘繁鍒葷殑鍙樺寲銆傚浠婁紒涓氱駭搴旂敤鏁村悎涓庡紑鍙戠殑浠誨姟涓昏鐢?SPAN lang=EN>Java銆?SPAN lang=EN>C#銆?SPAN lang=EN>Visual Basic浠ュ強鍚勭鏂板瀷鍔ㄦ佽璦鏉ユ壙鎷咃紝鑰?SPAN lang=EN>C++鐨勫簲鐢ㄥ満鍚堜篃鏈夋墍鏀剁緝錛屼笉鍐嶆槸鍍?SPAN lang=EN>1990騫翠唬涓湡閭f牱浠庝笂鍒頒笅鍖呮墦澶╀笅錛岃屾槸鍛堢幇鍑洪矞鏄庣殑搴旂敤棰嗗煙鐗硅壊銆傜浉搴旂殑錛岃繎鏈熺殑C++鎶鏈浘涔︿篃鏇村姞娉ㄩ噸鍦ㄧ壒鑹查鍩熺殑鍙戞尌銆備笅闈㈡垜浠垎鍒粠鍑犱釜瑙掑害鏉ヤ簡瑙h繎鏈?SPAN lang=EN>C++鍥句功鐨勭儹鐐癸紝騫朵笖灞曟湜鏈潵涓騫翠腑C++鎶鏈浘涔︿腑鍊煎緱娉ㄦ剰鐨勯夐銆?SPAN lang=EN> 

銆銆 

緇忓吀钁椾綔鍏ㄩ潰緲繪柊 

榪欎竴涓ゅ勾錛屼竴澶ф壒緇忓吀鎶鏈浘涔﹂兘緇忓巻浜嗕竴嬈℃洿鏂版崲浠o紝C++緇忓吀鍥句功鑷劧涔熶笉渚嬪銆傜涓涓璇寸殑灝辨槸Scott Meyers鐨勩?SPAN lang=EN>Effective C++銆嬨傝繖鏈功鍦?SPAN lang=EN>1991騫存帹鍑虹涓鐗堬紝1998騫存帹鍑虹浜岀増錛屽湪C++鎶鏈殑浼犳挱涓庢暀鑲叉柟闈㈠眳鍔熻嚦浼熴傚寘鎷垜鍦ㄥ唴鐨勫緢澶?SPAN lang=EN>C++寮鍙戣呴兘鏄氳繃闃呰榪欐湰涔﹁屽寰楀崌鍫傚叆瀹ょ殑闂ㄥ緞銆備粖騫達紝銆?SPAN lang=EN>Effective C++銆嬫帹鍑轟簡絎笁鐗堛傝繖涓鐗堝喅涓嶆槸絎簩鐗堢殑綆鍗曚慨璁紝鑰屾槸鏍規嵁鍏勾鏉?SPAN lang=EN>C++鎵鍙戠敓鐨勫法澶у彉鍖栬岃繘琛岀殑涓嬈″叏闈㈡敼鍐欙紝鍑犱箮鏄竴鏈叏鏂扮殑涔︺傚叾鍐呭娑電洊浜嗘棫鐗堢殑綺鵑珦錛屼篃浣撶幇浜嗚濡?SPAN lang=EN>Boost搴撱?SPAN lang=EN>TR1鏍囧噯絳?SPAN lang=EN>C++棰嗗煙鏈鏂版垚鏋溿傚鏋滆榪欐湰涔︾殑鍐呭鍙戠敓浜嗛噸澶х殑鍙樺寲錛岄偅涔堝彲浠ヨ涓嶅彉鐨勬槸榪欐湰涔︾殑鍦頒綅鈥斺斿畠浠嶇劧鏄瘡涓弗鑲冪殑C++寮鍙戣呴兘搴斿綋鍙嶅闃呰棰嗘偀鐨勯噸瑕佷綔鍝併?SPAN lang=EN> 

鍙︿竴鏈炕鏂扮殑钁椾綔鏄?SPAN lang=EN>Stan Lippman鐨勩?SPAN lang=EN>C++ Primer銆嬬鍥涚増銆傝繖鏈功鐨勫巻鍙插湴浣嶆棤闇璧樿█錛岃縿浠婁負姝粛鐒舵槸瀵?SPAN lang=EN>C++浠嬬粛鏈鍏ㄩ潰鐨勪竴鏈憲浣溿傜鍥涚増榪涜浜嗗ぇ騫呭害鐨勫垹淇紝綃囧箙鍑忓皯榪?SPAN lang=EN>300欏碉紝鑰屽唴瀹逛篃澶у箙淇敼錛屼互鍙嶆槧C++榪戝勾鏉ョ殑鍙樺寲銆傚浜庡笇鏈涚郴緇熷涔?SPAN lang=EN>C++鐨勬柊鎵嬶紝鎴栬呭笇鏈涙嫢鏈変竴鏈墜鍐屼互澶囨煡鐨勮佹墜鏉ヨ錛岃繖鏈功鐨勫湴浣嶆槸涓嶅彲鍙栦唬鐨勩?SPAN lang=EN> 

鏈変紶璦璇?SPAN lang=EN>GoF鎵撶畻緲繪柊鈥?SPAN lang=EN>Design Patterns鈥濄傝涔︾涓鐗堜簬1995騫村垵鐗堬紝姝ゅ悗鍗佸勾錛岃璁℃ā寮忛鍩熺殑鐞嗚鎺㈣鍜屽疄璺靛熀鏈笂浠嶇劧鍥寸粫榪欐湰涔︿腑鐨勮鐐瑰拰鍐呭榪涜錛屽皯鏈夌獊鐮淬傚凡緇忔湁涓嶅皯寮鍙戣呭浜庤繖縐嶆儏鍐佃〃紺轟簡涓嶆弧錛岃涓哄垵鐗堜腑鐨勪竴浜涜鐐瑰凡緇忚繃鏃訛紝鐢氳嚦瀵圭幇鍦ㄧ殑涓浜涙妧鏈簲鐢ㄦ瀯鎴愭濇兂涓婄殑緹佺粖銆備絾鏄涔﹀疄鍦ㄥ0鍚嶅お鐩涳紝鐪熸鐨勭獊鐮存亹鎬曞彧鑳界敱GoF鑷繁瀹屾垚錛屽洜姝ゆ湰涔︽柊鐗堝鏋滄帹鍑猴紝蹇呭皢鏄妧鏈晫鍐呯殑涓妗╁ぇ浜嬨備笉榪囦紶璦浜︾О錛?SPAN lang=EN>GoF瀵逛簬鏂扮増鈥?SPAN lang=EN>Design Patterns鈥濇槸鍚︾戶緇嬌鐢?SPAN lang=EN>C++浣滀負紺鴻寖璇█瀛樺湪鍒嗘銆備笉綆℃庢牱錛岀浉淇″箍澶ц鑰呬細瀵硅繖鏈功鎶辨湁楂樺害鐨勫叧娉ㄣ?SPAN lang=EN> 

鏂伴攼浣充綔鍓戣蛋鍋忛攱 

榪戝勾鏉ワ紝涓鎵?SPAN lang=EN>C++鎶鏈柊閿愬礇璧鳳紝緇欐垜浠甫鏉ヤ簡涓鎵逛護浜鴻崇洰涓鏂扮殑C++濂戒功銆傚湪鎶鏈笂錛岃繖鎵瑰浘涔﹀亸閲嶄簬C++妯℃澘椋庢牸鐨勫閥濡欒繍鐢紝瀵屼簬鏅鴻叮鑰屽瀹炶返鐨勫叧娉ㄧ暐鏄句笉瓚熾傝繖綾誨浘涔︿互2001騫?SPAN lang=EN>Andrei Alexandrescu鐨勩?SPAN lang=EN>Modern C++ Design銆嬩負寮绔紝涔嬪悗鍙堟湁銆?SPAN lang=EN>Boost Graphic Library銆嬶紝銆?SPAN lang=EN>C++ Template Metap- rogramming銆嬬瓑銆傝繖浜涗功涓搴︿互鍏舵柊棰栫殑鎬濇兂鍜屽濡欑殑鎶宸у惛寮曚簡澶у鐨勭洰鍏夛紝浣嗙敱浜庣己涔忓疄璺電殑鏀拺錛岄愭笎瑜幓鍏夌幆銆傝繖涓ゅ勾錛岃繖綾婚鏉愰愭笎緙╁噺銆傚嵆浣垮儚Andrei Alexandrescu閭f牱鐨勬ā鏉挎妧鏈鎵嶏紝鏈榪戜笌Herb Sutter鍚堜綔鐨勩?SPAN lang=EN>C++ Coding Standard銆嬩篃騫舵病鏈夎繃澶氬湴鐐妯℃澘鎶宸э紝鑰屾槸涓涓煩鍦板C++緙栫爜鐨勭粡楠屽仛浜嗚創榪戝疄璺電殑鎬葷粨銆傝繖鏈功涓?SPAN lang=EN>Steve McConnell鐨勭粡鍏歌憲浣溿?SPAN lang=EN>Code Complete II銆嬬浉閰嶅悎錛屽簲鎴愪負姣忎竴浣?SPAN lang=EN>C++寮鍙戣呭繀璇葷殑鍩烘湰钁椾綔錛屽皢甯姪璇昏呭瀹氬潥瀹炵殑緙栫爜鍜屽井瑙傝璁℃妧鏈熀紜銆?SPAN lang=EN> 

Boost鏄?SPAN lang=EN>C++紺劇兢灝戒漢鐨嗙煡鐨勨滃噯鏍囧噯搴撯濓紝鍏朵腑澶ч噺鐨勭粍浠跺凡緇忓熀鏈垚鐔熷茍鍙緵搴旂敤銆傛渶榪?SPAN lang=EN>Bjorn Karlsson鎾板啓鐨勩?SPAN lang=EN>Beyond C++ Standard Library: An Introduction to Boost銆嬫槸甯傞潰涓婄涓鏈叏闈粙緇?SPAN lang=EN>Boost鐨勮憲浣溿傚浜庨偅浜涘媷浜庡悆铻冭煿鐨?SPAN lang=EN>C++鍏堥攱寮鍙戣呮潵璇達紝榪欐湰涔︽棤鐤戞槸鍊煎緱涓璇葷殑銆備笉榪囧湪C++紺劇兢錛屽Boost搴撹繕瀛樺湪浜夎銆傚ぇ閮ㄥ垎C++瀹炶返鑰呮瘮杈冧繚瀹堬紝榪欐湰涔﹀浠栦滑鐨勫惛寮曞姏鎭愭曞皢鎵撴姌鎵c?SPAN lang=EN> 

Stephen Dewhurst鏄繎騫存潵姣旇緝媧昏穬鐨勬柊閿愪綔瀹訛紝浠栫殑涓ゆ湰涔︺?SPAN lang=EN>C++ Gotchas銆嬪拰銆?SPAN lang=EN>C++ Common Knowledge銆嬶紝鍗曠嫭鏉ョ湅閮芥槸鍊煎緱涓璇葷殑濂戒功錛屽彲鎯滅幇鍦ㄤ笉鏄?SPAN lang=EN>1995騫達紝鑰屾槸2005騫達紝Scott Meyers銆?SPAN lang=EN>Herb Sutter鐓岀厡宸ㄨ憲宸茬劧鍗辨ヤ節浜旓紝Dewhurst鍙ソ鑷徆鏂芥墜鐣ユ參銆備笉榪囨垜浠笇鏈涗粬鑳藉鍐嶆帴鍐嶅帀錛屾壘鍒板垱鏂扮偣錛岀獊鐮村墠浜恒?SPAN lang=EN> 

鐩告瘮涔嬩笅錛屼腑鏂囩増鍗沖皢闂笘鐨勩?SPAN lang=EN>Imperfect C++銆嬪氨姣旇緝鏈夋柊鎰忥紝寰堝煎緱涓璇伙紝浠ヨ嚦浜?SPAN lang=EN>Bjarne Stroustrup閮界浉褰撹禐璧忋傝繖浣?SPAN lang=EN>C++涔嬬埗琛ㄧず錛屽鏋滀笉鏄洜涓鴻涔﹀お鍘氾紝浠栦竴瀹氫細灝嗗叾綰沖叆钁楀悕鐨勨?SPAN lang=EN>C++ in Depth鈥濈郴鍒椼傝繖鍦ㄤ簨瀹炰笂鑲畾浜嗘湰涔︾殑楂樿川閲忋傛垜涓漢璁や負錛岃繖鏈功鏄竴騫存潵鍑虹増鐨勬渶鍊煎緱綺捐鐨?SPAN lang=EN>C++钁椾綔錛屽叾涓浜庝笉灝戝疄璺典腑緇忓父閬囧埌鐨勯毦棰樿繘琛屼簡娣卞叆鐨勫垎鏋愶紝緇欏嚭浜嗗疄瀹炲湪鍦ㄧ殑瑙e喅鏂規銆備綔鑰?SPAN lang=EN>Matt Wilson鍑熸涔︿互鍙婂叾緋誨垪妯℃澘紼嬪簭搴撳礇璧蜂負C++紺劇兢涓紩浜烘敞鐩殑鏂版槦錛屽疄鍦ㄥ彲鍠滃彲璐恒?SPAN lang=EN> 

銆銆 

鍏抽敭棰嗗煙鏈熷緟浣充綔 

鏈潵C++灝嗕富瑕佸湪緋葷粺綰у鏉傚簲鐢ㄧ▼搴忋侀珮鎬ц兘銆佸疄鏃朵腑闂翠歡鍙婂祵鍏ュ紡棰嗗煙鏂藉睍錛屽悓鏃訛紝闅忕潃澶氭牳CPU鐨勭殑鏅強鍜岀綉緇滃畨鍏ㄩ噸瑕佹х殑絀哄墠鎻愬崌錛屽湪騫跺彂紼嬪簭璁捐鍜屽畨鍏ㄧ▼搴忚璁℃柟闈紝C++涔熷皢鑾峰緱鏂扮殑搴旂敤絀洪棿銆傚洜姝わ紝鍦ㄨ繖浜涘叿浣撻鍩熺殑C++钁椾綔鏇村煎緱鍏蟲敞銆?SPAN lang=EN> 

1996騫達紝John Lakos鍑虹増浜嗐?SPAN lang=EN>Large Scale C++銆嬩竴涔︼紝璇ヤ功涓?鈥?SPAN lang=EN>C++ In Depth鈥濈郴鍒椾腑鐨勩?SPAN lang=EN>Applied C++銆嬩竴鏍鳳紝鏄?SPAN lang=EN>C++钁椾綔涓瀬灝戞暟瀹炴垬媧句匠浣滐紝鍏朵腑瀛楀瓧鍙ュ彞閮芥潵鑷簬浣滆呬赴瀵岀殑瀹為檯欏圭洰緇忛獙錛屽浜庝竴綰跨殑C++寮鍙戣呮潵璇存槸鐗瑰埆鍊煎緱鍜鍤間綋鍛崇殑濂戒功銆傚彲鎯滆繖鏈功鍦ㄥ浗鍐呬竴鐩存病鏈夊緱鍒板簲鏈夌殑閲嶈錛岃繖鍙兘璺熸湰涔︿腑璇戞湰鍑虹増鏃墮棿榪囨櫄錛屼笖緲昏瘧璐ㄩ噺涓嶄匠鏈夊叧銆傚ソ娑堟伅鏄紝John Lakos鍗沖皢鍦?SPAN lang=EN>2006騫存帹鍑哄叾鏂頒綔銆?SPAN lang=EN>Scalable C++銆嬨傛垜鏈漢灝嗘涔﹁涓烘湭鏉ヤ竴騫翠腑C++棰嗗煙鏈浠や漢鏈熷緟鐨勪綔鍝併傝繖涓鏂歸潰鏄嚭浜庢垜瀵逛簬浣滆呯殑楂樺害淇′換錛屽彟涓鏂歸潰鏄敱浜庤涔﹂鏉愮殑鏋佺閲嶈鎬с傝涔﹀壇鏍囬涓衡滃熀浜庣粍浠剁殑杞歡寮鍙戔濓紝鑰屸滅粍浠跺寲鈥濊繖涓涓婚錛屾槸C++鍗佸嚑騫存潵鐨勪竴鍧楀績鐥呫傚湪鏈潵錛屾棤璁?SPAN lang=EN>C++搴旂敤鍦ㄤ綍縐嶅満鍚堬紝鈥滅粍浠跺寲鈥濇槸蹇呬笉鍙皯鐨勫熀鏈姹傘傝?SPAN lang=EN>COM鎶鏈櫧鐒跺湪緇勪歡鍖栨柟闈㈡瘮杈冩垚鐔燂紝浣嗘槸涓嶅叿鏈夊彲縐繪鎬э紝鑰屼笖瀵逛簬鏃犻』璺ㄨ璦鐨?SPAN lang=EN>C++寮鍙戦」鐩潵璇磋繃浜庡鏉傘傚洜姝わ紝C++紺劇兢闇瑕佽嚜宸辨帰璁ㄧ粡嫻庨傜敤鐨勭粍浠跺寲瀹炵敤鏂規銆?SPAN lang=EN>John Lakos鏈漢浠庝簨澶у瀷澶嶆潅搴旂敤杞歡寮鍙戝騫達紝鍦ㄨ繖鏂歸潰鐨勭粡楠屾棤浜鴻兘鏁岋紝鐢變粬鏉ュ榪欎釜涓婚榪涜娣卞叆鍓栨瀽錛屽茍涓旂粰鍑哄疄闄呰В鍐蟲柟妗堬紝姣棤鐤戦棶鏄啀鍚堥備笉榪囩殑浜嗐傝櫧鐒惰繖鏈功榪樺湪鍐欎綔榪囩▼涓紝浣嗘槸鎴戜滑鏈夌悊鐢卞鍏舵姳鏈夊厖鍒嗕俊蹇冦傚湪姝ゆ垜涔熷懠鍚佹湰涔︿腑鏂囩増鏈潵鐨勫嚭鐗堣呰鐪熷寰呮涔︾殑緲昏瘧鍒朵綔錛屼笉瑕侀噸韞堛?SPAN lang=EN>Large Scale C++銆嬬殑瑕嗚緳銆?SPAN lang=EN> 

璇村埌COM錛岃嚜浠?SPAN lang=EN>.NET鎺ㄥ嚭錛?SPAN lang=EN>COM鐨勪功鍑犱箮涓澶滀箣闂寸粷浜嗙錛屽嚑涔庢棤浜哄啀鍕囦簬鐐掕繖紕楀喎楗備絾榪欐鍑虹増鐣岀殑鑼跺疄鍦ㄥ噳寰楀揩浜嗕簺錛屼簨瀹炰笂鐩村埌浠婂ぉ錛?SPAN lang=EN>COM寮鍙戜粛鐒舵槸Windows騫沖彴涓婂簲鐢ㄥ紑鍙戠殑涓涓噸瑕佹柟鍚戙傜壒鍒槸鍦ㄥ墠涓ゅ勾寰蔣Windows鏍稿績鍚?SPAN lang=EN>.NET鍏ㄩ潰杞瀷鐨勫乏鍊懼啋闄╀富涔夌殑灝濊瘯浠ュけ璐ュ憡緇堝悗錛屽湪鍙鐨勬湭鏉ワ紝Windows鎿嶄綔緋葷粺灝嗙戶緇瀯寤哄湪C/C++鍜?SPAN lang=EN>COM鐨勫熀紜涔嬩笂鈥斺旇繖灝辯‘淇濅簡COM鍦?SPAN lang=EN>Windows騫沖彴涓婄殑閲嶈鍦頒綅灝嗚嚦灝戝歡緇埌2011騫翠箣鍚庛傚洜姝わ紝COM銆?SPAN lang=EN>ATL鍜?SPAN lang=EN>WTL寮鍙戞妧鏈湪鏈潵鍑犲勾閮借繕鏄鍏鋒剰涔夌殑鍑虹増棰樻潗銆傜壒鍒槸榪戝勾鏉?SPAN lang=EN>ATL/WTL鐨勫彂灞曚箣蹇紝鐩告瘮涔嬩笅錛屾妧鏈嚭鐗堝湪榪欐柟闈㈠嚭鐜頒簡涓涓┖鐧界偣銆傛澶栵紝寮婧愮殑Mozilla欏圭洰鎻愪緵浜嗕竴涓彲縐繪鍒版墍鏈変富嫻佸鉤鍙扮殑COM瀹炵幇錛岃繖瀵逛簬C++寮鍙戣呮潵璇存槸寰堝叿鏈夊惛寮曞姏鐨勶紝鍗翠竴鐩存病鏈夊嚭鐗堣祫婧愮殑鍏蟲敞錛屼護浜洪仐鎲俱?SPAN lang=EN> 

C++榪戝勾鏉ョ殑涓涓簲鐢ㄧ儹鐐規槸澶嶆潅緗戠粶搴旂敤鐨勫紑鍙戯紝ACE鍦ㄨ繖鏂歸潰宸茬粡鎴愪負瓚婃潵瓚婃祦琛岀殑閫夋嫨錛岃?SPAN lang=EN>ICE浣滀負鐩墠鍙敤鐨勬渶鍏堣繘鐨勯珮鎬ц兘涓棿浠朵駭鍝侊紝宕涜搗鐨勫娍澶村緢鐚涖傝繖涓ゆ柟闈㈢洰鍓嶉兘鏈変竴浜涘ソ涔︼紝鐗瑰埆鏄渶榪戝嚭鐗堢殑銆?SPAN lang=EN>ACE Programmer鈥?SPAN lang=EN>s Guide銆嬶紝瀵逛簬ACE緙栫▼鍏ラ棬寰堟湁濂藉銆傝?SPAN lang=EN>ICE 1.3鐗堢殑鎵嬪唽鏃╁凡鐢遍┈緇磋揪鍏堢敓璇戞垚涓枃錛屽彲鍦ㄧ綉涓婅嚜鐢辮幏寰椼備笉榪囧潶鐜囧湴璇達紝榪欐柟闈㈢殑鍥句功榪樿繙榪滀笉澶燂紝ACE鍘熶綔鑰?SPAN lang=EN>Doug Schmidt鎵钁楃殑涓ゅ嵎鏈?SPAN lang=EN>C++ Network Programming銆嬪彲璇繪у拰瀹炵敤鎬т笉瓚籌紝鑰?SPAN lang=EN>ICE鎵嬪唽娣卞害鍜屽箍搴﹂兘鏄句笉澶燂紝鎴戜滑鏈熸湜榪欐柟闈㈣兘鏈夋洿濂界殑钁椾綔鍑虹幇銆?SPAN lang=EN> 

闅忕潃澶氭牳CPU鐨勬櫘鍙婏紝騫跺彂紼嬪簭璁捐灝嗘垚涓?SPAN lang=EN>C++鎶鏈笂鐨勪竴涓柊鐑偣銆傝繖鏂歸潰鐩墠鐨勫ソ涔﹀嚑涔庢病鏈夛紝涓嶇煡閬撹繖涓法澶х殑絀虹櫧灝嗙敱浣曟柟紲炲湥鏉ュ~琛ャ?SPAN lang=EN> 

鍚屾牱錛岀綉緇滃畨鍏ㄩ噸瑕佹х殑絀哄墠鎻愬崌瀵?SPAN lang=EN>C++寮鍙戞彁鍑轟簡寰堝鏂扮殑鍏蜂綋瑕佹眰錛屽緢澶?SPAN lang=EN>C++鑰佹墜闈復涓涓滃啀鏁欒偛鈥濈殑闂銆傝繖鏂歸潰Microsoft Press鐨勩?SPAN lang=EN>Writing Safe Code銆嬶紝O鈥?SPAN lang=EN>Reilly鐨勩?SPAN lang=EN>Secure Programming Cookbook for C and C++銆嬶紝浠ュ強鏈榪?SPAN lang=EN>Pearson鍑虹増鐨勩?SPAN lang=EN>Secure Coding in C and C++銆嬮兘鏄笉閿欑殑鍙傝冦備笉榪囨垜鍙戠幇鐩墠C++寮鍙戣呭茍鏈櫘閬嶉噸瑙嗚繖涓棶棰樸備篃璁哥鐞嗗眰榪橀渶瑕佹洿鍔犫滆娣嬫穻鐨勬暀璁濇潵鍒烘縺涓涓嬶紝鎵嶄細鏈夐潻鏂扮殑鍔ㄥ姏銆?SPAN lang=EN> 

鍦ㄥ祵鍏ュ紡鏂歸潰錛岀敱浜庡簲鐢ㄥ鏉傚害鐨勯愭笎鎻愬崌鍜?SPAN lang=EN>Symbian OS/Windows CE絳夐潰鍚戞秷璐圭殑楂樼駭宓屽叆寮忔搷浣滅郴緇熺殑騫挎硾搴旂敤錛岀粰C++鎻愪緵浜嗕竴涓箍闃旂殑鍙戞尌絀洪棿銆傚彲鎯滃湪榪欐柟闈紝鐪熸鍫О緇忓吀鐨勫ソ涔﹁繕鏄嚖姣涢簾瑙掞紝鐪嬫潵榪橀渶瑕佹椂闂村拰緇忛獙鐨勭Н娣銆備笉榪囨湁涓鏈功鐗瑰埆鍊煎緱涓鎻愶紝鍖楄埅鍑虹増紺懼幓騫村紩榪涚殑銆婂祵鍏ュ紡緋葷粺鐨勫井妯″潡鍖栬璁°嬭鍥介檯宓屽叆寮忓紑鍙戦鍩熷叕鎺ㄤ負鏁板勾鏉ュ勾搴︽渶閲嶈鐨勫祵鍏ュ紡杞歡寮鍙戞妧鏈憲浣滐紝鍏朵腑鍚湁涓浜涙剰涔夋繁榪滅殑鍒涙柊鎬濇兂錛岄潪宓屽叆寮忓紑鍙戣呬篃鏈夊繀瑕佷簡瑙f涔︾殑澶ц嚧鎬濇兂銆?SPAN lang=EN> 

銆銆 

鎬葷粨 

紼嬪簭璁捐璇█鏁頒互鍗冭錛岃兘澶熷箍涓烘祦浼犵殑涓嶈繃鍑犲崄縐嶏紝鑰岃兘澶熼鍏?SPAN lang=EN>20騫寸殑鏇存槸灞堟寚鍙暟銆?SPAN lang=EN>Fortran宸茬粡闂笘50騫達紝浠嶇劧鏄瀛﹁綆楅閫夛紝C璇█杈夌厡30騫達紝鑷充粖鑰佸綋鐩婂.銆?SPAN lang=EN>C++欏哄埄鍦板害榪囦簡鑷繁鐨?SPAN lang=EN>20宀佺敓鏃ワ紝鐩鎬俊灞炰簬瀹冪殑鏃ュ瓙榪樺緢闀垮緢闀褲備綔涓?SPAN lang=EN>C++寮鍙戣咃紝鎴戜滑涔熷笇鏈涚湅鍒頒紭縐鐨?SPAN lang=EN>C++鎶鏈浘涔︿笉鏂秾鐜般傚巻鍙茶瘉鏄庯紝C++棰嗗煙鍐呯殑鎶鏈垱鏂幫紝涓嶄絾瀵逛簬C++寮鍙戝叿鏈夐噸澶ф剰涔夛紝鑰屼笖瀵逛簬鏁翠釜杞歡寮鍙戞妧鏈兘鍏鋒湁閲嶅ぇ鎰忎箟銆傛垜浠湁鐞嗙敱鐩鎬俊錛屽湪涓嬩竴涓崄騫撮噷錛屼互楂樻按騫?SPAN lang=EN>C++鎶鏈笓瀹跺拰浣滃涓轟唬琛ㄧ殑C++鎶鏈ぞ緹よ兘澶熺戶緇負杞歡鎶鏈仛鍑虹獊鍑虹殑璐$尞銆?/FONT>

 



]]>
#pragma 棰勫鐞嗘寚浠よ瑙杞澆]http://m.shnenglu.com/klsmlzm/archive/2006/02/28/3563.html鐗電墰鏁f鐗電墰鏁fTue, 28 Feb 2006 01:46:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2006/02/28/3563.htmlhttp://m.shnenglu.com/klsmlzm/comments/3563.htmlhttp://m.shnenglu.com/klsmlzm/archive/2006/02/28/3563.html#Feedback0http://m.shnenglu.com/klsmlzm/comments/commentRss/3563.htmlhttp://m.shnenglu.com/klsmlzm/services/trackbacks/3563.html

 

鍦ㄦ墍鏈夌殑棰勫鐞嗘寚浠や腑錛?Pragma 鎸囦護鍙兘鏄渶澶嶆潅鐨勪簡錛屽畠鐨勪綔鐢ㄦ槸璁懼畾緙栬瘧鍣ㄧ殑鐘舵佹垨鑰呮槸鎸囩ず緙栬瘧鍣ㄥ畬鎴愪竴浜涚壒瀹氱殑鍔ㄤ綔銆?pragma鎸囦護瀵規瘡涓紪璇戝櫒緇欏嚭浜嗕竴涓柟娉?鍦ㄤ繚鎸佷笌C鍜孋 ++璇█瀹屽叏鍏煎鐨勬儏鍐典笅,緇欏嚭涓繪満鎴栨搷浣滅郴緇熶笓鏈夌殑鐗瑰緛銆備緷鎹畾涔?緙栬瘧鎸囩ず鏄満鍣ㄦ垨鎿嶄綔緋葷粺涓撴湁鐨?涓斿浜庢瘡涓紪璇戝櫒閮芥槸涓嶅悓鐨勩?
鍏舵牸寮忎竴鑸負: #Pragma Para
鍏朵腑Para 涓哄弬鏁幫紝涓嬮潰鏉ョ湅涓浜涘父鐢ㄧ殑鍙傛暟銆?


(1)message 鍙傛暟銆?Message 鍙傛暟鏄垜鏈鍠滄鐨勪竴涓弬鏁幫紝瀹冭兘澶熷湪緙栬瘧淇℃伅杈撳嚭紿?
鍙d腑杈撳嚭鐩稿簲鐨勪俊鎭紝榪欏浜庢簮浠g爜淇℃伅鐨勬帶鍒舵槸闈炲父閲嶈鐨勩傚叾浣跨敤鏂規硶涓猴細
#Pragma message(鈥滄秷鎭枃鏈?
褰撶紪璇戝櫒閬囧埌榪欐潯鎸囦護鏃跺氨鍦ㄧ紪璇戣緭鍑虹獥鍙d腑灝嗘秷鎭枃鏈墦鍗板嚭鏉ャ?
褰撴垜浠湪紼嬪簭涓畾涔変簡璁稿瀹忔潵鎺у埗婧愪唬鐮佺増鏈殑鏃跺欙紝鎴戜滑鑷繁鏈夊彲鑳介兘浼氬繕璁版湁娌℃湁姝g‘鐨勮緗繖浜涘畯錛屾鏃舵垜浠彲浠ョ敤榪欐潯鎸囦護鍦ㄧ紪璇戠殑鏃跺欏氨榪涜媯鏌ャ傚亣璁炬垜浠笇鏈涘垽鏂嚜宸辨湁娌℃湁鍦ㄦ簮浠g爜鐨勪粈涔堝湴鏂瑰畾涔変簡_X86榪欎釜瀹忓彲浠ョ敤涓嬮潰鐨勬柟娉?
#ifdef _X86
#Pragma message(鈥淿X86 macro activated!鈥?
#endif
褰撴垜浠畾涔変簡_X86榪欎釜瀹忎互鍚庯紝搴旂敤紼嬪簭鍦ㄧ紪璇戞椂灝變細鍦ㄧ紪璇戣緭鍑虹獥鍙i噷鏄劇ず鈥淿
X86 macro activated!鈥濄傛垜浠氨涓嶄細鍥犱負涓嶈寰楄嚜宸卞畾涔夌殑涓浜涚壒瀹氱殑瀹忚屾姄鑰蟲尃鑵簡
銆?

(2)鍙︿竴涓嬌鐢ㄥ緱姣旇緝澶氱殑pragma鍙傛暟鏄?SPAN style="COLOR: rgb(255,0,0)">code_seg銆傛牸寮忓錛?
#pragma code_seg( ["section-name"[,"section-class"] ] )
瀹冭兘澶熻緗▼搴忎腑鍑芥暟浠g爜瀛樻斁鐨勪唬鐮佹錛屽綋鎴戜滑寮鍙戦┍鍔ㄧ▼搴忕殑鏃跺欏氨浼氫嬌鐢ㄥ埌瀹冦?

(3)#pragma once (姣旇緝甯哥敤錛?
鍙鍦ㄥご鏂囦歡鐨勬渶寮濮嬪姞鍏ヨ繖鏉℃寚浠ゅ氨鑳藉淇濊瘉澶存枃浠惰緙栬瘧涓嬈★紝榪欐潯鎸囦護瀹為檯涓婂湪VC6涓氨宸茬粡鏈変簡錛屼絾鏄冭檻鍒板吋瀹規у茍娌℃湁澶鐨勪嬌鐢ㄥ畠銆?

(4)#pragma hdrstop琛ㄧず棰勭紪璇戝ご鏂囦歡鍒版涓烘錛屽悗闈㈢殑澶存枃浠朵笉榪涜棰勭紪璇戙侭CB鍙互棰勭紪璇戝ご鏂囦歡浠ュ姞蹇摼鎺ョ殑閫熷害錛屼絾濡傛灉鎵鏈夊ご鏂囦歡閮借繘琛岄緙栬瘧鍙堝彲鑳藉崰澶紓佺洏絀洪棿錛屾墍浠ヤ嬌鐢ㄨ繖涓夐」鎺掗櫎涓浜涘ご鏂囦歡銆?
鏈夋椂鍗曞厓涔嬮棿鏈変緷璧栧叧緋伙紝姣斿鍗曞厓A渚濊禆鍗曞厓B錛屾墍浠ュ崟鍏傿瑕佸厛浜庡崟鍏傾緙栬瘧銆備綘鍙互鐢?pragma startup鎸囧畾緙栬瘧浼樺厛綰э紝濡傛灉浣跨敤浜?pragma package(smart_init) 錛孊CB灝變細鏍規嵁浼樺厛綰х殑澶у皬鍏堝悗緙栬瘧銆?

(5)#pragma resource "*.dfm"琛ㄧず鎶?.dfm鏂囦歡涓殑璧勬簮鍔犲叆宸ョ▼銆?.dfm涓寘鎷獥浣?
澶栬鐨勫畾涔夈?

(6)#pragma warning( disable : 4507 34; once : 4385; error : 164 )
絳変環浜庯細
#pragma warning(disable:4507 34) // 涓嶆樉紺?507鍜?4鍙瘋鍛婁俊鎭?
#pragma warning(once:4385) // 4385鍙瘋鍛婁俊鎭粎鎶ュ憡涓嬈?
#pragma warning(error:164) // 鎶?64鍙瘋鍛婁俊鎭綔涓轟竴涓敊璇?
鍚屾椂榪欎釜pragma warning 涔熸敮鎸佸涓嬫牸寮忥細
#pragma warning( push [ ,n ] )
#pragma warning( pop )
榪欓噷n浠h〃涓涓鍛婄瓑綰?1---4)銆?
#pragma warning( push )淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬併?
#pragma warning( push, n)淇濆瓨鎵鏈夎鍛婁俊鎭殑鐜版湁鐨勮鍛婄姸鎬侊紝騫朵笖鎶婂叏灞璀﹀憡
絳夌駭璁懼畾涓簄銆?
#pragma warning( pop )鍚戞爤涓脊鍑烘渶鍚庝竴涓鍛婁俊鎭紝鍦ㄥ叆鏍堝拰鍑烘爤涔嬮棿鎵浣滅殑
涓鍒囨敼鍔ㄥ彇娑堛備緥濡傦細
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
//.......
#pragma warning( pop )
鍦ㄨ繖孌典唬鐮佺殑鏈鍚庯紝閲嶆柊淇濆瓨鎵鏈夌殑璀﹀憡淇℃伅(鍖呮嫭4705錛?706鍜?707)銆?
錛?錛?SPAN style="COLOR: rgb(255,0,0)">pragma comment(...)
璇ユ寚浠ゅ皢涓涓敞閲婅褰曟斁鍏ヤ竴涓璞℃枃浠舵垨鍙墽琛屾枃浠朵腑銆?
甯哥敤鐨刲ib鍏抽敭瀛楋紝鍙互甯垜浠繛鍏ヤ竴涓簱鏂囦歡銆?
(8)鐢╬ragma瀵煎嚭dll涓殑鍑芥暟

    浼犵粺鐨勫埌鍑?DLL 鍑芥暟鐨勬柟娉曟槸浣跨敤妯″潡瀹氫箟鏂囦歡 (.def)錛孷isual C++ 鎻愪緵浜嗘洿綆媧佹柟渚跨殑鏂規硶錛岄偅灝辨槸鈥淿_declspec()鈥濆叧閿瓧鍚庨潰璺熲渄llexport鈥濓紝鍛婅瘔榪炴帴鍘昏瀵煎嚭榪欎釜鍑芥暟錛屼緥濡傦細

__declspec(dllexport) int __stdcall MyExportFunction(int iTest);

    鎶娾淿_declspec(dllexport)鈥濇斁鍦ㄥ嚱鏁板0鏄庣殑鏈鍓嶉潰錛岃繛鎺ョ敓鎴愮殑 DLL 灝變細瀵煎嚭鍑芥暟鈥淿MyExportFunction@4鈥濄?/P>

    涓婇潰鐨勫鍑哄嚱鏁扮殑鍚嶇О涔熻涓嶆槸鎴戠殑甯屾湜鐨勶紝鎴戜滑甯屾湜瀵煎嚭鐨勬槸鍘熺増鐨勨淢yExportFunction鈥濄傝繕濂斤紝VC 鎻愪緵浜嗕竴涓澶勭悊鎸囩ず絎︹?pragma鈥濇潵鎸囧畾榪炴帴閫夐」 (涓嶄粎浠呮槸榪欎竴涓姛鑳斤紝榪樻湁寰堝鎸囩ず鍔熻兘) 錛屽涓嬶細

#pragma comment(linker,"/EXPORT:MyExportFunction=_MyExportFunction@4")

    榪欎笅灝卞ぉ濡備漢鎰夸簡錛氾級銆傚鏋滀綘鎯蟲寚瀹氬鍑虹殑欏哄簭錛屾垨鑰呭彧灝嗗嚱鏁板鍑轟負搴忓彿錛屾病鏈?Entryname錛岃繖涓澶勭悊鎸囩ず絎?(紜垏鍦拌鏄繛鎺ュ櫒) 閮借兘澶熷疄鐜幫紝鐪嬬湅 MSDN 鐨勮娉曡鏄庯細

/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

   @ordinal 鎸囧畾欏哄簭錛汵ONAME 鎸囧畾鍙皢鍑芥暟瀵煎嚭涓哄簭鍙鳳紱DATA 鍏抽敭瀛楁寚瀹氬鍑洪」涓烘暟鎹」銆?/P>

姣忎釜緙栬瘧紼嬪簭鍙互鐢?pragma鎸囦護嬋媧繪垨緇堟璇ョ紪璇戠▼搴忔敮鎸佺殑涓浜涚紪璇戝姛鑳?/SPAN>銆備緥濡傦紝瀵瑰驚鐜紭鍖栧姛鑳斤細
#pragma loop_opt(on) // 嬋媧?
#pragma loop_opt(off) // 緇堟
鏈夋椂錛岀▼搴忎腑浼氭湁浜涘嚱鏁頒細浣跨紪璇戝櫒鍙戝嚭浣犵啛鐭ヨ屾兂蹇界暐鐨勮鍛婏紝濡傗淧arameter xxx is never used in function xxx鈥濓紝鍙互榪欐牱錛?
#pragma warn 鈥?00 // Turn off the warning message for warning #100
int insert_record(REC *r)
{ /* function body */ }
#pragma warn +100 // Turn the warning message for warning #100 back on
鍑芥暟浼氫駭鐢熶竴鏉℃湁鍞竴鐗瑰緛鐮?00鐨勮鍛婁俊鎭紝濡傛鍙殏鏃剁粓姝㈣璀﹀憡銆?
姣忎釜緙栬瘧鍣ㄥ#pragma鐨勫疄鐜頒笉鍚岋紝鍦ㄤ竴涓紪璇戝櫒涓湁鏁堝湪鍒殑緙栬瘧鍣ㄤ腑鍑犱箮鏃犳晥銆傚彲浠庣紪璇戝櫒鐨勬枃妗d腑鏌ョ湅銆?/FONT>



]]>
鍩轟簬TCP/IP鐨勫綰跨▼閫氫俊鍙婂叾鍦ㄨ繙紼嬬洃鎺х郴緇熶腑鐨勫簲鐢?/title><link>http://m.shnenglu.com/klsmlzm/archive/2005/12/16/1830.html</link><dc:creator>鐗電墰鏁f</dc:creator><author>鐗電墰鏁f</author><pubDate>Fri, 16 Dec 2005 09:27:00 GMT</pubDate><guid>http://m.shnenglu.com/klsmlzm/archive/2005/12/16/1830.html</guid><wfw:comment>http://m.shnenglu.com/klsmlzm/comments/1830.html</wfw:comment><comments>http://m.shnenglu.com/klsmlzm/archive/2005/12/16/1830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/klsmlzm/comments/commentRss/1830.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/klsmlzm/services/trackbacks/1830.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0> <TBODY> <TR> <TD class=font-br style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #336699; LINE-HEIGHT: 150%" align=middle>鍩轟簬TCP/IP鐨勫綰跨▼閫氫俊鍙婂叾鍦ㄨ繙紼嬬洃鎺х郴緇熶腑鐨勫簲鐢?/TD></TR> <TR> <TD> <HR SIZE=1> </TD> <TR> <TD style="PADDING-BOTTOM: 5pt; COLOR: #919191" align=middle></TD></TR> <TR> <TD style="LINE-HEIGHT: 150%"><BR>銆銆浼犵粺鐨勫簲鐢ㄧ▼搴忛兘鏄崟綰跨▼鐨勶紝鍗沖湪紼嬪簭榪愯鏈熼棿錛岀敱鍗曚釜綰跨▼鐙崰CPU鐨勬帶鍒舵潈錛岃礋璐f墽琛屾墍鏈変換鍔°傚湪榪欑鎯呭喌涓嬶紝紼嬪簭鍦ㄦ墽琛屼竴浜涙瘮杈冭垂鏃剁殑浠誨姟鏃訛紝灝辨棤娉曞強鏃跺搷搴旂敤鎴風殑鎿嶄綔錛屽獎鍝嶄簡搴旂敤紼嬪簭鐨勫疄鏃舵ц兘銆傚湪鐩戞帶緋葷粺錛岀壒鍒槸榪滅▼鐩戞帶緋葷粺涓紝搴旂敤紼嬪簭寰寰涓嶄絾瑕佸強鏃舵妸鐩戞帶瀵硅薄鐨勬渶鏂頒俊鎭弽棣堢粰鐩戣瀹㈡埛錛堥氳繃鍥懼艦鏄劇ず錛夛紝榪樿澶勭悊鏈湴鏈轟笌榪滅▼鏈轟箣闂寸殑閫氫俊浠ュ強瀵規帶鍒跺璞$殑瀹炴椂鎺у埗絳変換鍔★紝榪欐椂 錛屼粎浠呯敱鍗曚釜綰跨▼鏉ュ畬鎴愭墍鏈変換鍔★紝鏄劇劧鏃犳硶婊¤凍鐩戞帶緋葷粺鐨勫疄鏃舵ц姹傘傚湪DOS緋葷粺涓嬶紝榪欎簺宸ヤ綔鍙互鐢變腑鏂潵瀹屾垚銆傝屽湪Windows NT涓嬶紝涓柇鏈哄埗瀵圭敤鎴鋒槸涓嶉忔槑鐨勩備負姝わ紝鍙紩榪涘綰跨▼鏈哄埗錛屼富綰跨▼涓撻棬璐熻矗娑堟伅鐨勫搷搴旓紝浣跨▼搴忚兘澶熷搷搴斿懡浠ゅ拰鍏朵粬浜嬩歡銆傝緟鍔╃嚎紼嬪彲浠ョ敤浜庡畬鎴愬叾浠栨瘮杈冭垂鏃剁殑宸ヤ綔錛屽閫氫俊銆佸浘褰㈡樉紺哄拰鍚庡彴鎵撳嵃絳夛紝榪欐牱灝變笉鑷充簬褰卞搷涓葷嚎紼嬬殑榪愯銆?BR><BR>銆銆錛?Windows NT 澶氱嚎紼嬫榪?BR><BR>銆銆Windows NT鏄竴涓湡姝g殑鎶㈠崰寮忓浠誨姟鎿嶄綔緋葷粺銆傚湪 Windows NT涓紝鍚姩涓涓簲鐢ㄧ▼搴忓氨鏄惎鍔ㄨ搴旂敤紼嬪簭鐨勪竴涓疄渚嬶紝鍗寵繘紼嬨傝繘紼嬬敱涓涓垨澶氫釜綰跨▼鏋勬垚錛屾嫢鏈夊唴瀛樺拰璧勬簮錛屼絾鑷繁涓嶈兘鎵ц鑷繁錛岃屾槸榪涚▼涓殑綰跨▼琚皟搴︽墽琛屻傝繘紼嬭嚦灝戣鏈変竴涓嚎紼嬶紝褰撳垱寤轟竴涓繘紼嬫椂錛屽氨鍒涘緩浜嗕竴涓嚎紼嬶紝鍗充富綰跨▼銆備富綰跨▼鍙互鍒涘緩鍏朵粬杈呭姪綰跨▼錛岀敱涓葷嚎紼嬪垱寤虹殑綰跨▼鍙堝彲鍒涘緩綰跨▼銆傛瘡涓嚎紼嬮兘鍙寚瀹氫紭鍏堢駭錛屾搷浣滅郴緇熸牴鎹嚎紼嬬殑浼樺厛綰ц皟搴︾嚎紼嬬殑鎵ц銆?BR><BR>銆銆Windows NT涓嬌鐢ㄥ綰跨▼鐨勬柟娉曟湁涓夌錛?BR><BR>銆銆路 浣跨敤C澶氱嚎紼嬪簱鍑芥暟錛?BR><BR>銆銆路 浣跨敤CreateThread() 絳塛in32鍑芥暟錛?BR><BR>銆銆路 浣跨敤MFC綾匯?BR><BR>銆銆鏈枃閲囩敤絎笁縐嶆柟娉曘傚湪Visual C++5.0 涓紝MFC搴旂敤紼嬪簭鐢–WinThread 瀵硅薄琛ㄧず綰跨▼銆傚熀鏈搷浣滃涓嬶細<BR><BR>銆銆路 鍒涘緩鏂扮嚎紼嬶細璋冪敤MFC鍏ㄥ眬鍑芥暟AfxBeginThread 錛堬級鍒涘緩鏂扮嚎紼嬨侫fxBeginThread錛堬級鍚姩鏂扮嚎紼嬪茍榪斿洖鎺у埗錛岀劧鍚庯紝鏂扮嚎紼嬪拰璋冪敤AfxBeginThread錛堬級鐨勭嚎紼嬪悓鏃惰繍琛屻傚畠鐨勮繑鍥炲間負鎸囧悜CWinThread瀵硅薄鐨勬寚閽堬紱<BR><BR>銆銆路 鏆傚仠錛忔仮澶嶇嚎紼嬶細璋冪敤CWinThread綾繪垚鍛樺嚱鏁癝uspendThread錛堬級鏆傚仠綰跨▼鐨勮繍琛岋紝璋冪敤ResumeThread錛堬級鎴愬憳鍑芥暟鎭㈠綰跨▼鐨勮繍琛岋紱<BR><BR>銆銆路 緇堟綰跨▼錛氬湪綰跨▼鍐呴儴鍙皟鐢ㄥ叏灞鍑芥暟AfxBeginThread錛堬級緇堟綰跨▼鐨勮繍琛岋紝鍚﹀垯錛岀嚎紼嬫墽琛岀粨鏉熷悗錛岀嚎紼嬭嚜鍔ㄤ粠綰跨▼鍑芥暟榪斿洖騫墮噴鏀劇嚎紼嬪崰鏈夌殑璧勬簮銆?BR><BR>銆銆錛?鍩轟簬TCP/IP鐨勫綰跨▼緙栫▼<BR><BR><IMG height=256 src="http://www.jicheng.net.cn/auto_news/images/yd00120801.gif" width=268 align=right>銆銆TCP/IP鏄痩nternet涓婂箍娉涗嬌鐢ㄧ殑涓縐嶅崗璁紝鍙敤浜庡紓縐嶆満涔嬮棿鐨勪簰鑱斻俆CP/IP鍗忚鏈韓鏄潪甯稿鏉傜殑錛岀劧鑰屽湪緗戠粶緙栫▼涓紝紼嬪簭鍛樹笉蹇呰冭檻TCP/IP鐨勫疄鐜扮粏鑺傦紝鍙渶鍒╃敤鍗忚鐨勭綉緇滅紪紼嬫帴鍙ocket錛堜害縐板鎺ュ瓧錛夊嵆鍙傚湪 Windows 涓紝緗戠粶緙栫▼鎺ュ彛鏄?Windows Socket顤勫畠鍖呭惈鏍囧噯鐨凚erkley Sockets鐨勫姛鑳借皟鐢ㄧ殑闆嗗悎錛屼互鍙婁負 Windows 鎵鍋氱殑涓浜涙墿灞曘俆CP/IP鍗忚鐨勫簲鐢ㄤ竴鑸噰鐢ㄥ鎴鳳紡鏈嶅姟鍣ㄦā寮忥紝闈㈠悜榪炴帴鐨勫簲鐢ㄨ皟鐢ㄥ鍥撅紤鎵紺恒?BR><BR>銆銆鏍規嵁涓婅堪欏哄簭璋冪敤鍑芥暟寤虹珛榪炴帴鍚庯紝閫氫俊鍙屾柟渚垮彲浜ゆ崲鏁版嵁銆傜劧鑰岋紝鍦ㄨ皟鐢ㄥ甫*鍙風殑鍑芥暟鏃訛紝鎿嶄綔甯鎬細闃誨錛岀壒鍒槸褰撳鎺ュ瓧宸ヤ綔鍦ㄥ悓姝ラ樆濉炴ā寮忥紙Blocking Mode錛夋椂銆傝繖鏃訛紝紼嬪簭鏃犳硶鍝嶅簲浠諱綍娑堟伅銆備負浜嗛伩鍏嶅嚭鐜拌繖縐嶆儏鍐碉紝鏈枃寮曡繘杈呭姪綰跨▼銆傚湪鎵ц鍚湁鍙兘闃誨鐨勫嚱鏁扮殑浠誨姟鏃訛紝鍔ㄦ佸垱寤烘柊鐨勭嚎紼嬶紝涓撻棬澶勭悊璇ヤ換鍔°備富綰跨▼鎶婁換鍔′氦緇欒緟鍔╃嚎紼嬪悗錛屼笉鍐嶅杈呭姪綰跨▼鍔犱互鎺у埗涓庤皟搴︺傛湰鏂囧垎鍒拡瀵筩onnect錛堬級銆乤ccept錛堬級銆乺eceive錛堬級銆乻end錛堬級絳夊彲鑳介樆濉炵殑鍑芥暟鍒涘緩浜嗙浉搴旂殑綰跨▼錛屽琛?鎵紺恒?BR><BR><IMG height=139 src="http://www.jicheng.net.cn/auto_news/images/yd00120802.gif" width=323 align=left>銆銆澶氱嚎紼嬬紪紼嬪父甯歌繕瑕佽冭檻綰跨▼闂寸殑閫氫俊銆傜嚎紼嬮棿鐨勯氫俊鍙互閲囩敤鍏ㄥ眬鍙橀噺銆佹寚閽堝弬鏁板拰鏂囦歡鏄犲皠絳夋柟寮忋傛湰鏂囬噰鐢ㄦ寚閽堝弬鏁版柟寮忋傚湪璋冪敤AfxBeginThread錛堬級鍑芥暟鏃訛紝閫氳繃浼犻掓寚閽堝弬鏁扮殑鏂瑰紡鍦ㄤ富綰跨▼涓庤緟鍔╃嚎紼嬮棿閫氫俊銆?BR><BR>銆銆AfxBeginThread錛堬級鍑芥暟鐨勭敤娉曞涓嬶細<BR><BR>銆銆CWinThread*AfxBeginThread顥?錛圓FX錛縏HREADPROC pfnThreadproc錛?BR><BR>銆銆LPVOID pParam錛?BR><BR>銆銆int nPriority=THREAD錛縋RIORITY錛縉ORMAL錛岊杽<BR><BR>銆銆UINT nStackSixe=0錛?BR><BR>銆銆DWORD dwCreateFlags=0錛?BR><BR>銆銆LPSECURITY錛緼TTRIBUTES pSecurityAttrs=NULL錛夛紱<BR><BR>銆銆鍙傛暟pfnThreadProc鎸囧畾綰跨▼鍑芥暟顤勫繀欏誨涓嬪畾涔夛細<BR><BR>銆銆UINT MyControllingFunction顥わ紙LPVOID pParam錛夛紱 顥ヮ渽<BR><BR>銆銆鍙傛暟pParam 鏄皟鐢ㄧ嚎紼嬩紶閫掔粰綰跨▼鍑芥暟pfThreadProc鐨勫弬鏁幫紱<BR><BR>銆銆鍏朵粬鍙傛暟涓鑸彧闇閲囩敤緙虹渷鍊箋?BR><BR>銆銆鎸囬拡鍙傛暟閫氫俊鏂瑰紡灝辨槸閫氳繃鍙傛暟pParam鍦ㄧ嚎紼嬮棿閫氫俊鐨勶紝瀹冨彲涓烘寚鍚戜換浣曟暟鎹被鍨嬬殑鎸囬拡銆傛湰鏂囦腑錛屽畾涔変簡涓涓悕鍙獷XCHANGE錛縄NFO鐨勭粨鏋勫涓嬶細<BR><BR>銆銆typedef struct<BR><BR>銆銆{ SOCKET sServerSocket錛涱渽<BR><BR>銆銆SOCKET 顤?pcCoientSocket錛涱渽<BR><BR>銆銆SOCKADDR錛縄N 顤?pClientAddr錛涱渽<BR><BR>銆銆BOOL *pbConnected錛?BR><BR>銆銆unsigned char *pucBuffer顪咃紱<BR><BR>銆銆int *pnMessageLen顪咃紱<BR><BR>銆銆} EXCHANGE錛縄NFO錛?BR><BR>銆銆鍦ㄩ渶瑕侀氫俊鏃訛紝鍏堝0鏄庝竴涓粨鏋勫彉閲忥紝鍐嶆妸鍙橀噺鐨勬寚閽堜綔涓簆Param鍙傛暟錛岃皟鐢ˋfxBeginThread錛堬紙AFX錛縏HREADPROC錛夘棩 CSocketThread錛氾細顪刉aitFor ConnectThread錛岋紙LPVOID錛夛紗 m錛縀xchangeinfo錛夊嚱鏁板嵆鍙?BR><BR>銆銆涓轟簡鍒╃敤闈㈠悜瀵硅薄鎶鏈紪紼嬫墍鍏鋒湁鐨勬ā鍧楁у己銆佷究浜庝慨鏀廣佸彲縐繪鎬уソ絳変紭鐐癸紝鏈枃榪樻妸琛?涓殑綰跨▼灝佽涓虹埗綾諱負CWinThread鐨勮嚜瀹氫箟綾籆SocketThread涓傝繕鑷畾涔変簡涓涓彨CSocketComm鐨勬柊綾伙紝灝佽浜嗕竴浜涘嚱鏁幫紝濡侰reateSocket銆丆onnectToServer銆乄aitForClient銆丷eadMessage銆丼endMessage絳夛紝榪欎簺鍑芥暟灞忚斀浜嗛潰鍚戣繛鎺ョ殑閫氫俊紼嬪簭鐨勫疄鐜扮粏鑺傦紝濡傚垱寤恒佽繛鎺ャ佸彂閫佸拰鎺ユ敹絳夛紝鍦ㄨ繖浜涘嚱鏁伴噷錛屽姩鎬佸垱寤鴻緟鍔╃嚎紼嬨?BR><BR>銆銆涓嬮潰浠SocketComm綾諱腑鐨勭瓑寰呭鎴瘋繛鎺ヨ姹傜殑鍑芥暟WaitForClient錛堬級涓轟緥錛屾敞閲婅鏄庡綰跨▼緙栫▼鐨勫叿浣撶粏鑺傘?BR><BR>銆銆BOOL CSocketComm::WaitForClient顥?BR><BR>銆銆{ <BR><BR>銆銆if(m錛縝Connected)return顥? TRUE );顥ヮ渽<BR><BR>銆銆錛忥紡閰嶇疆bind鍑芥暟鐨勫弬鏁邦杽鍗蟲湇鍔″櫒鐨勫鎺ュ瓧鍦板潃緇撴瀯<BR><BR>銆銆SOCKADDR錛縄N Addr顪?<BR><BR>銆銆memset(錛咥ddr,0,sizeof(SOCKADDR錛縄N));顥ヮ渽<BR><BR>銆銆Addr錛巗in錛縡amily=AF錛縄NET;<BR><BR>銆銆ADDR錛嶴IN錛縫ort= htonl顥?m錛縩Port); 顥ヮ渽<BR><BR>銆銆Addr錛巗in錛縜ddr錛巗錛縜ddr锝?= htonl(INADDR錛緼NY); 顥ヮ渽<BR><BR>銆銆錛忥紡灝嗗鎺ュ瓧鍦板潃緇撴瀯璧嬩簣濂楁帴瀛楋紙緇戝畾錛夛紝浠ユ寚瀹氭湰鍦板崐鐩稿叧<BR><BR>銆銆int nReturnValue;<BR><BR>銆銆nReturnValue =::bind顥? m錛縮SserverSocket,( LPSOCKADDR)顥ワ紗Addr,sizeof (SOCKADDR錛縄N ));顥?顥ヮ渽<BR><BR>銆銆if顥?nReturnValue == SOCKET錛縀RROR) 顥?returu顥? FALSE );顥ヮ渽<BR><BR>銆銆錛忥紡閰嶇疆浼犵粰WaitForConnectThread綰跨▼鍑芥暟鐨勫弬鏁癿錛縀xchangeinfo<BR><BR>銆銆m錛縀xchangeinfo錛巗ServerSocket = m錛縮erverSocket;顪?BR><BR>銆銆m錛縀xchangeinfo錛巔sClientSocket = 錛唌錛縮ClientSocket;顪?BR><BR>銆銆m錛縀xchangeinfo錛巔ClientAddr = 錛唌錛縧ientAddr;顪?BR><BR>銆銆m錛縀xchangeinfo錛巔bConnected = 錛唌錛縝Connected;顪?BR><BR>銆銆錛忥紡浠錛縀xchangeinfo鐨勬寚閽堜負鍙傛暟璋冪敤WaitforConnectThread綰跨▼絳夊緟瀹㈡埛绔繛鎺?BR><BR>銆銆AfxBeginThread顥?(AFX錛縏HREADPROC)顥SocketThread::<BR><BR>銆銆WaitForConnectThread,顤?LPVOID)顥?錛唌錛縀xchanginfo); 顥ヮ渽<BR><BR>銆銆returi顥? TRUE )顥ヮ渽<BR><BR>銆銆}<BR><BR>銆銆錛忥紡絳夊緟榪炴帴綰跨▼<BR><BR>銆銆UINT CSocketThread::WaitForConnectThread顥?LPVOIDpParam)顥?BR><BR>銆銆{<BR><BR>銆銆EXCHANGE錛縄NFO顤?pExchangelnfo錛?EXCHANGE錛縄NFO*) pParam;顪?BR><BR>銆銆int nReturnValue, nClientAddrSize= Sizeof顥? SOCKADDR錛縄N);<BR><BR>銆銆錛忥紡渚﹀惉榪炴帴<BR><BR>銆銆nReturnValue=:: listen顥?pExchangelnfo 錛嶏紴sServerSocket, 1); 顥ヮ渽<BR><BR>銆銆if顥? nReturnValue == SOCKET錛縀RROR )顥eturn顥?0);顪?BR><BR>銆銆錛忥紡闃誨璋冪敤accept錛岀洿鑷蟲湁瀹㈡埛榪炴帴璇鋒眰<BR><BR>銆銆*pExchangelnfo錛嶏紴psClitentSocket=:: accept顥?pExchangelnfo錛嶏紴sServerSocket,顤?顥?LPSOCKADDR)顥?pEchangelnfo 錛嶏紴pClientAddr,顤勶紗nClientAddrSize); 顥ヮ渽<BR><BR>銆銆if顥?( *pExchangelnfo錛嶏紴psClitentSocket)!= INVALID錛縎OCKET)顥?BR><BR>銆銆錛忥紡閫氳繃pExchangelnfo鐨勬寚閽堝湪綰跨▼闂撮氫俊<BR><BR>銆銆* pExchangelnfo錛嶏紴pbConnected TRUE;<BR><BR>銆銆return顥? 0 );顥ヮ渽<BR><BR>顨?BR><BR>銆銆錛?搴旂敤瀹炰緥錛嶉珮灞傚崗璁殑璁捐<BR><BR><IMG height=138 src="http://www.jicheng.net.cn/auto_news/images/yd00120803.gif" width=327 align=right>銆銆鍦ㄧ數鍘傚拰鐢電珯涓紝涓轟簡淇濊瘉瀹夊叏宸ヤ綔錛屼繚鎶ょ郴緇熷繀涓嶅彲灝戙備繚鎶ょ郴緇熺殑鐢墊簮渚涘簲閫氬父浣跨敤涓ょ鏂瑰紡銆備竴鑸儏鍐典笅錛屼嬌鐢ㄤ氦嫻佺數緋葷粺瀵逛繚鎶ょ郴緇熻繘琛屼緵鐢碉紱褰撲氦嫻佺數緋葷粺鍑虹幇鏁呴殰鏃額杽绔嬪嵆浣跨敤鍚庡鐨勮搫鐢墊睜緋葷粺瀵逛繚鎶ょ郴緇熻繘琛屼緵鐢點備負浜嗗钃勭數姹犵郴緇熻繘琛岀洃鎺у拰綆$悊錛屼互淇濊瘉钃勭數姹犲湪鍏抽敭鏃跺埢鑳芥甯稿伐浣滐紝璁捐浜嗗湪Windows NT鐜涓嬪叿鏈夎繙紼嬮氳鍔熻兘鍜屽姩鎬佷漢鏈虹晫闈㈢殑鏅鴻兘钃勭數姹犺繙紼嬬洃鎺х郴緇?銆傝緋葷粺鐢辮搫鐢墊睜鏅鴻兘綆$悊銆佸厖鐢墊満鎺у埗銆佹瘝綰跨粷緙樺湪綰挎嫻嬨佸0鍏夋姤璀︺佺郴緇熺粍鎬併佽繙紼嬮氫俊絳夊瓙緋葷粺緇勬垚錛屽疄鐜板钃勭數姹狅紡鍏呯數鏈烘櫤鑳藉寲榪滅▼綆$悊鍜屾帶鍒訛紝瀵規暣涓郴緇熺殑榪愯鐘舵佽繘琛屽疄鏃剁洃鎺э紝鍏鋒湁澶氬獟浣撴姤璀︺佷簨浠跺鐞嗐佸姩鎬佹暟鎹簱銆佽秼鍔跨敾闈㈠拰鍔ㄦ佺敾闈㈡樉紺恒佹搷浣滄彁鍓嶆彁閱掔瓑鍔熻兘銆傜郴緇熸鍥懼鍥?鎵紺恒傚湪榪滅▼閫氫俊妯″潡涓紝榪滅▼鐩戞帶鏈洪渶鎶婄洃鎺у鎴風殑鎿嶄綔鍛戒護鍙婃椂浼犵粰鏈湴鏈猴紝鏈湴鏈烘牴鎹懡浠ゆ帶鍒跺厖鐢墊満錛屼嬌涔嬫寜鐓т竴瀹氱殑鏂瑰紡宸ヤ綔錛岃屾湰鍦版満闇瀹氭椂鍚戣繙紼嬬洃鎺ф満鍙嶉瀹炴椂鐨勫厖鐢墊満鐘舵佷俊鎭傚畠浠箣闂寸殑閫氫俊鏄熀浜嶵CP/IP鐨勫箍鍩熺綉閫氫俊錛岃屼笖錛屾垜浠紩榪涗簡澶氱嚎紼嬫満鍒朵互淇濊瘉緋葷粺鍏鋒湁鑹ソ鐨勫疄鏃舵с?BR><BR>銆銆涓嬮潰浠ュ叾涓殑鍏呯數鏈烘帶鍒剁郴緇熶負渚嬭皥璋堝浣曚嬌鐢–SocketComm綾昏繘琛岃繙紼嬮氫俊銆備負綆鍗曡搗瑙侊紝鍋囧畾鏈湴鏈轟笌榪滅▼鐩戞帶鏈轟箣闂撮氫俊鐨勪俊鎭粎鏈変笅闈笁縐嶇被鍨嬶細<BR><BR>銆銆路鏈湴鏈烘帴鏀跺埌璇ュ懡浠ゅ悗錛屾帶鍒跺厖鐢墊満鎸夌収紼沖帇妯″紡榪愯錛岃緭鍑虹數鍘嬩負鐢靛帇緇欏畾鍊鹼紱<BR><BR>銆銆路鏈湴鏈烘帴鏀跺埌璇ュ懡浠ゅ悗錛屾帶鍒跺厖鐢墊満鎸夌収紼蟲祦瀹氭椂妯″紡榪愯錛岃緭鍑虹數嫻佷負鐢墊祦緇欏畾鍊鹼紱<BR><BR>銆銆路鏈湴鏈哄悜榪滅▼鐩戞帶鏈哄彂閫佸厖鐢墊満鐨勫疄鏃剁姸鎬佹暟鎹紙鍖呮嫭杈撳嚭鐢靛帇銆佽緭鍑虹數嫻併佺姸鎬佹寚紺哄拰鏁呴殰綾誨瀷鎸囩ず錛夈?BR><BR>銆銆鍦ㄥ熀浜嶵CP/IP鐨勯潰鍚戣繛鎺ョ殑緗戠粶閫氫俊涓紝瀹㈡埛涓庢湇鍔″櫒涔嬮棿浼犻佺殑鏄湁搴忓彲闈犵殑瀛楄妭嫻侊紙Byte Stream錛夛紝鎵浠ョ▼搴忓憳鏈夊繀瑕佸湪浼犺緭灞俆CP涓婂畾涔夎嚜宸辯殑楂樺眰鍗忚錛岃璁″撫緇撴瀯錛屽皢瀛楄妭嫻佸彉鎴愭湁鎰忎箟鐨勪俊鎭傚湪CSocketComm綾諱腑鐢盇ssembleMessage()鍑芥暟鎶婃暟鎹粍鍚堟垚涓瀹氱殑甯х粨鏋勩傚撫緇撴瀯涓猴細<BR><BR> <DIV align=center><IMG height=22 src="http://www.jicheng.net.cn/auto_news/images/yd00120804.gif" width=263></DIV><BR><BR>銆銆鍏朵腑錛犱負甯ц搗濮嬫爣蹇楋紝錛冧負甯х粓緇撴爣蹇?BR><BR>銆銆瀵瑰簲鐨勭粨鏋勫畾涔夊涓嬶細<BR><BR>typedef struct<BR><BR>顨 int MessageType;顪?錛忥紡淇℃伅綾誨瀷<BR><BR>int ChargerNo;顪?錛忥紡鍏呯數鏈虹紪鍙?BR><BR>int DataNo;顪?錛忥紡鏁版嵁綾誨瀷<BR><BR>float Data;顪?錛忥紡鏁版嵁<BR><BR>顨 MessageStruct;顪?BR><BR>銆銆闇瑕侀氫俊鏃訛紝鍏堝0鏄庝竴涓?MessageStruct鍙橀噺錛屾牴鎹俊鎭唴瀹瑰鍚勬垚鍛樺彉閲忚祴鍊鹼紝浼犵粰 AssembleMessage()鍑芥暟緇勫悎鎴愬撫錛屽啀璋冪敤SendMessage()鍑芥暟鍙戦佺粰鎺ュ彈鏂廣傛帴鍙楁柟鎺ュ埌鏁版嵁鍚庯紝瀵規暟鎹唴瀹圭殑瑙i噴錛屾槸鐢盋socketComm綾諱腑鐨凙nalyzeMessage()鍑芥暟瀹屾垚鐨勩侫nalyzeMessage()鍑芥暟榪斿洖涓涓?MessageStruct鍙橀噺銆傚簲鐢ㄧ▼搴忓氨鍙牴鎹畠鐨勫悇鎴愬憳鍙橀噺鎺у埗鍏呯數鏈烘垨鍔ㄦ佹樉紺哄厖鐢墊満鐨勭姸鎬併?BR><BR>銆銆鎬諱箣錛屾妸澶氱嚎紼嬫満鍒跺紩榪涢氫俊錛屾湁鍒╀簬鎻愰珮搴旂敤紼嬪簭鐨勫疄鏃舵э紝鍏呭垎鍒╃敤緋葷粺璧勬簮銆傚浜庡ぇ鍨嬬殑宸ョ▼搴旂敤鏉ヨ錛屼笉鍚岀殑綰跨▼瀹屾垚涓嶅悓鐨勪換鍔★紝涔熸湁鍒╀簬鎻愰珮紼嬪簭鐨勬ā鍧楀寲錛屼究浜庣淮鎶ゅ拰鎵╁睍銆傛湰鏂囩粰鍑轟簡涓縐嶅湪Windows NT涓嬪熀浜嶵CP/IP鍗忚鐨勫綰跨▼閫氫俊鐨勫熀鏈柟娉曪紝鏍規嵁璇ユ柟娉曡繘琛屼慨鏀瑰拰鎵╁厖錛屼究鍙璁″嚭絎﹀悎鍏蜂綋搴旂敤鐨勯珮璐ㄩ噺鐨勫綰跨▼閫氫俊紼嬪簭銆?/TD></TR></TBODY></TABLE><img src ="http://m.shnenglu.com/klsmlzm/aggbug/1830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/klsmlzm/" target="_blank">鐗電墰鏁f</a> 2005-12-16 17:27 <a href="http://m.shnenglu.com/klsmlzm/archive/2005/12/16/1830.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>std::string 涓?char 綾誨瀷鐨勭浉浜掕漿鎹?/title><link>http://m.shnenglu.com/klsmlzm/archive/2005/12/15/1794.html</link><dc:creator>鐗電墰鏁f</dc:creator><author>鐗電墰鏁f</author><pubDate>Thu, 15 Dec 2005 07:27:00 GMT</pubDate><guid>http://m.shnenglu.com/klsmlzm/archive/2005/12/15/1794.html</guid><wfw:comment>http://m.shnenglu.com/klsmlzm/comments/1794.html</wfw:comment><comments>http://m.shnenglu.com/klsmlzm/archive/2005/12/15/1794.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.shnenglu.com/klsmlzm/comments/commentRss/1794.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/klsmlzm/services/trackbacks/1794.html</trackback:ping><description><![CDATA[<P>  //string 杞崲涓?char 鍨?BR>  char* str = strdup ( SendData.strSql.c_str() );<BR>  cout << str << endl;</P> <P>  char 杞崲涓?string 鍨?BR>  char* str = "char 杞崲涓?string 鍨?;<BR>  SendData.strSql = str;<BR><BR>//SendData.strSql 涓簊td::string鍨?/P><img src ="http://m.shnenglu.com/klsmlzm/aggbug/1794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/klsmlzm/" target="_blank">鐗電墰鏁f</a> 2005-12-15 15:27 <a href="http://m.shnenglu.com/klsmlzm/archive/2005/12/15/1794.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞澆:瀛︿範ICE 3.0--Slice璇█http://m.shnenglu.com/klsmlzm/archive/2005/12/13/1712.html鐗電墰鏁f鐗電墰鏁fTue, 13 Dec 2005 04:00:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2005/12/13/1712.htmlhttp://m.shnenglu.com/klsmlzm/comments/1712.htmlhttp://m.shnenglu.com/klsmlzm/archive/2005/12/13/1712.html#Feedback0http://m.shnenglu.com/klsmlzm/comments/commentRss/1712.htmlhttp://m.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://m.shnenglu.com/klsmlzm/archive/2005/12/13/1711.html鐗電墰鏁f鐗電墰鏁fTue, 13 Dec 2005 03:58:00 GMThttp://m.shnenglu.com/klsmlzm/archive/2005/12/13/1711.htmlhttp://m.shnenglu.com/klsmlzm/comments/1711.htmlhttp://m.shnenglu.com/klsmlzm/archive/2005/12/13/1711.html#Feedback0http://m.shnenglu.com/klsmlzm/comments/commentRss/1711.htmlhttp://m.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錛屽彲浠ョ湅鍒扮粨鏋滀簡銆?



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              一区二区三区导航| 国产亚洲精品一区二555| 亚洲一区二区黄| 亚洲视频网站在线观看| 中国日韩欧美久久久久久久久| 日韩午夜黄色| 亚洲自拍三区| 久久综合久色欧美综合狠狠| 牛牛精品成人免费视频| 欧美日韩hd| 国产女主播一区二区| 蜜臀av一级做a爰片久久 | 亚洲精品免费看| 亚洲经典自拍| 这里只有精品丝袜| 久久成人精品视频| 欧美激情1区2区3区| 99亚洲精品| 久久久成人精品| 欧美另类在线播放| 国产午夜精品久久| 亚洲精品午夜| 久久久久国色av免费观看性色| 欧美国产日韩xxxxx| 亚洲一级网站| 欧美成人久久| 国产三区二区一区久久| 亚洲乱码精品一二三四区日韩在线| 亚洲欧美日韩在线播放| 欧美高清视频一区| 欧美一区二区三区四区在线观看 | 久久久久久久尹人综合网亚洲| 久久九九久精品国产免费直播| 一本色道久久综合亚洲精品不卡 | 亚洲电影在线| 亚洲人久久久| 欧美一区网站| 91久久精品日日躁夜夜躁国产| 亚洲制服欧美中文字幕中文字幕| 久久中文在线| 黄色亚洲精品| 亚洲你懂的在线视频| 亚洲国产高清一区二区三区| 欧美一区二区在线免费观看| 欧美午夜视频网站| 99精品视频免费观看视频| 老司机67194精品线观看| 亚洲自拍偷拍麻豆| 欧美视频一区二| 亚洲日韩视频| 欧美国产综合视频| 欧美中文字幕视频| 亚洲一区二区在线看| 欧美日韩麻豆| 中国成人在线视频| 亚洲剧情一区二区| 欧美大片在线影院| 亚洲国产精品高清久久久| 久热精品在线| 久久久久国产精品一区| 狠狠入ady亚洲精品经典电影| 欧美一区二区福利在线| 国产性色一区二区| 激情欧美国产欧美| 欧美一区亚洲一区| 亚洲一区999| 国产精品日韩精品欧美精品| 亚洲欧美国产精品专区久久| 亚洲天堂免费在线观看视频| 国产精品久久久久久久午夜片| 亚洲视频axxx| 亚洲欧美日韩精品久久| 国产午夜亚洲精品不卡| 麻豆乱码国产一区二区三区| 免费欧美日韩国产三级电影| 日韩亚洲欧美成人一区| 亚洲最快最全在线视频| 国产精品中文字幕欧美| 老司机精品视频网站| 老妇喷水一区二区三区| 美女视频黄 久久| 午夜精品久久久久久久99樱桃| 亚洲国产精品视频| 亚洲高清123| 欧美日韩黄视频| 亚洲欧美文学| 久久久免费观看视频| 亚洲国产免费看| 一区二区欧美精品| 国产日本欧美一区二区三区在线 | 久久九九精品| 久久亚洲国产精品一区二区 | 欧美成人一品| 欧美日韩成人在线| 久久国产精品久久精品国产| 久久综合久久久久88| 国产主播在线一区| 蜜臀久久久99精品久久久久久 | 亚洲精美视频| 一区二区欧美精品| 亚洲国产精品999| 亚洲视频axxx| 久久理论片午夜琪琪电影网| 亚洲午夜精品久久| 久久午夜国产精品| 欧美一级久久久久久久大片| 欧美成人午夜剧场免费观看| 欧美综合国产| 欧美日韩在线一区二区三区| 美腿丝袜亚洲色图| 国产欧美日韩视频在线观看| 亚洲精品五月天| 亚洲国产精品女人久久久| 新狼窝色av性久久久久久| 欧美激情欧美狂野欧美精品 | 午夜亚洲视频| 在线视频亚洲| 免费欧美电影| 免费日韩一区二区| 国产私拍一区| 亚洲免费在线视频| 亚洲一本视频| 欧美日韩视频第一区| 亚洲福利专区| 亚洲黄色成人| 麻豆成人小视频| 蜜桃av噜噜一区二区三区| 国产精品外国| 欧美日韩一区二区视频在线| 亚洲高清在线播放| 久久久久免费观看| 国产精一区二区三区| 亚洲视频在线观看免费| 一本色道久久99精品综合| 欧美成人自拍| 91久久精品美女| 久久精品夜色噜噜亚洲a∨| 亚欧成人精品| 欧美在线|欧美| 国产精品一区久久| 亚洲一区二区三区在线视频| 亚洲欧美国产毛片在线| 欧美高清一区| 久久男人av资源网站| 免费毛片一区二区三区久久久| 国产在线一区二区三区四区| 久久久国产精品亚洲一区| 快射av在线播放一区| 亚洲人成小说网站色在线| 欧美电影打屁股sp| 99国内精品久久久久久久软件| 亚洲专区免费| 国产综合欧美| 欧美国产精品一区| 日韩一二三在线视频播| 午夜精品久久久久久久99水蜜桃| 国产欧美日韩亚洲精品| 久久久xxx| 亚洲伦理久久| 久久久久**毛片大全| 亚洲国产日韩综合一区| 欧美色精品在线视频| 久久国产毛片| 亚洲精品欧美精品| 欧美亚男人的天堂| 欧美一区二区黄色| 欧美日韩精品免费观看| 亚洲国产精品va| 欧美日韩亚洲系列| 欧美专区在线观看一区| 亚洲激情六月丁香| 欧美亚洲综合网| 亚洲人成精品久久久久| 国产精品日韩高清| 欧美成人国产| 欧美一区二区三区在线免费观看 | 久久久一区二区| 夜夜狂射影院欧美极品| 久久婷婷国产综合国色天香| 一区二区三区www| 怡红院精品视频在线观看极品| 欧美日韩精品一二三区| 欧美制服丝袜| 亚洲天堂激情| 亚洲精品一二| 欧美插天视频在线播放| 亚洲欧美日韩区| 亚洲精品乱码久久久久久按摩观 | 欧美日韩在线播放| 久久婷婷一区| 午夜精品一区二区三区电影天堂| 亚洲激情六月丁香| 麻豆成人精品| 久久精品国产99国产精品澳门| 另类天堂av| 久久久久久亚洲精品中文字幕| 亚洲欧美www| 亚洲一区二区三区777| 日韩一级大片在线| 亚洲日本在线观看|