锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Recently I has read object-oriend multithreading using C++ and find a interesting question ,: is it possible for us to use the file descriptor and socket to be linked to the object iostream ? the answer is no... even in the book is yes ,(osolete book);
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAXLINE 80
#define SERV_PORT 8000
int main(){
int servsock;
if((servsock = socket(AF_INET,SOCK_STREAM,0)) < 0){
perror("socket");
exit(1);
}
struct sockaddr_in peer;
memset(&peer,0,sizeof(peer));
socklen_t peerlen = sizeof(peer);
int ret;
if((ret = getpeername(servsock,(struct sockaddr*)&peer,&peerlen)) < 0){
perror("getpeername");
exit(1);
}
char meg[100];
inet_ntop(AF_INET,&peer,meg,peerlen);
printf("%s\n",meg);
}
A sequence point in imperative programming defines any point in a computer program's execution at which it is guaranteed that allside effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. They are often mentioned in reference to C and C++, because the result of some expressions can depend on the order of evaluation of their subexpressions. Adding one or more sequence points is one method of ensuring a consistent result, because this restricts the possible orders of evaluation.
綆鍗曠殑璇村氨鏄湪C/C++涓湁涓浜涙墽琛岄『搴忛棶棰橈紝C/C++瀹氫箟浜嗕竴浜泂equence point錛屽湪涓嬩竴涓猻equence point 鎵ц涔嬪墠蹇呴』鎶婂墠涓涓墽琛屽畬錛屼絾鏄棶棰樻槸鍦ㄤ竴涓猻equence point 鍜屽彟涓涓箣闂磋繕鏈変竴浜泂ide effect銆傜敱浜庤繖浜涘氨寮曞嚭涓浜涙湁瓚g殑闂銆?div style="display: inline-block; ">鏉′歡榪愮畻絎?:銆侀楀彿榪愮畻絎︺侀昏緫涓?amp;&銆侀昏緫鎴東|鐨勬瘡涓涓搷浣滄暟姹傚間箣鍚庢槸Sequence Point銆?br />闂涓錛?br />
闂浜岋細(xì)
鎵浠ユ垜浠鍧氭寔鐨勫師鍒欐槸錛?div style="display: inline-block; ">鍦ㄤ袱涓猄equence Point涔嬮棿錛屽悓涓涓彉閲忕殑鍊煎彧鍏佽琚敼鍙樹竴嬈?/em>銆?/span>琛ㄨ揪寮?, 琛ㄨ揪寮?
錛屼袱涓〃杈懼紡涓嶈姹傜被鍨嬩竴鑷達(dá)紝宸﹁竟鐨勮〃杈懼紡1鍏堟眰鍊鹼紝姹傚畬浜嗙洿鎺ユ妸鍊間涪鎺夛紝鍐嶆眰鍙寵竟琛ㄨ揪寮?鐨勫間綔涓烘暣涓〃杈懼紡鐨勫箋?div style="display: inline-block; ">娉ㄦ剰錛屽嚱鏁拌皟鐢ㄦ椂鍚勫疄鍙備箣闂翠篃鏄敤閫楀彿闅斿紑錛岃繖縐嶉楀彿鏄垎闅旂鑰屼笉鏄楀彿榪愮畻絎︺備絾鍙互榪欐牱浣跨敤閫楀彿榪愮畻絎︼細(xì)sizeof
鏄竴涓緢鐗規(guī)畩鐨勮繍綆楃錛屽畠鏈変袱縐嶅艦寮忥細(xì)“sizeof 琛ㄨ揪寮?/span>”鍜?#8220;sizeof(綾誨瀷鍚?”銆傝繖涓繍綆楃寰堢壒孌婏紝“sizeof 琛ㄨ揪寮?/span>”涓殑瀛愯〃杈懼紡騫朵笉姹傚鹼紝鑰屽彧鏄牴鎹被鍨嬭漿鎹㈣鍒欐眰寰楀瓙琛ㄨ揪寮忕殑綾誨瀷錛岀劧鍚庢妸榪欑綾誨瀷鎵鍗犵殑瀛楄妭鏁頒綔涓烘暣涓〃杈懼紡鐨勫箋傛湁浜涗漢鍠滄鍐欐垚“sizeof(琛ㄨ揪寮?”鐨勫艦寮忎篃鍙互銆?br />sizeof
榪愮畻絎︾殑緇撴灉鏄?code class="literal">size_t綾誨瀷鐨勶紝榪欎釜綾誨瀷瀹氫箟鍦?code class="literal">stddef.h澶存枃浠朵腑錛屼笉榪囦綘鐨勪唬鐮佷腑鍙涓嶅嚭鐜?code class="literal">size_t榪欎釜綾誨瀷鍚嶅氨涓嶇敤鍖呭惈榪欎釜澶存枃浠訛紝姣斿鍍忎笂闈㈢殑渚嬪瓙灝變笉鐢ㄥ寘鍚繖涓ご鏂囦歡銆侰鏍囧噯瑙勫畾size_t
鏄竴縐嶆棤絎﹀彿鏁村瀷錛岀紪璇戝櫒鍙互鐢?code class="literal">typedef鍋氫竴涓被鍨嬪0鏄庯紝閭d箞size_t
灝變唬琛?code class="literal">unsigned long鍨嬨備笉鍚屽鉤鍙扮殑緙栬瘧鍣ㄥ彲鑳戒細(xì)鏍規(guī)嵁鑷繁騫沖彴鐨勫叿浣撴儏鍐靛畾涔?code class="literal">size_t鎵浠h〃鐨勭被鍨嬶紝姣斿鏈夌殑騫沖彴瀹氫箟涓?code class="literal">unsigned long鍨嬶紝鏈夌殑騫沖彴瀹氫箟涓?code class="literal">unsigned long long鍨嬶紝C鏍囧噯瑙勫畾size_t
榪欎釜鍚嶅瓧灝辨槸涓轟簡闅愯棌榪欎簺緇嗚妭錛屼嬌浠g爜鍏鋒湁鍙Щ妞嶆с?br />
typedef鐢ㄦ潵澹版槑涓涓埆鍚嶏紝typedef鍚庨潰鐨勮娉曪紝鏄竴涓0鏄庛傛湰鏉ョ瑪鑰呬互涓鴻繖閲屼笉浼?xì)漶旂敓浠涔堣瑙g殑錛屼絾緇撴灉鍗村嚭涔庢剰鏂欙紝浜х敓璇В鐨勪漢涓嶅湪灝戞暟銆傜姜欖佺ジ棣栧張鏄偅浜涘浜虹殑鏁欐潗銆傚湪榪欎簺鏁欐潗涓粙緇峵ypedef鐨勬椂鍊欓氬父浼?xì)鍐欏嚭濡備笅迮炲紡锛?xì) typedef int PARA; 榪欑褰㈠紡璺?define int PARA鍑犱箮涓鏍鳳紝榪欎簺鏁欐潗鐨勫畻鏃ㄦ槸鐢辨祬鍏ユ繁錛屼絾瀹為檯鍋氬嚭鏉ョ殑琛屼負(fù)鍗存槸浠ュ亸鐩栧叏銆傜殑紜紝榪欑褰㈠紡鍦ㄦ墍鏈夊艦寮忎腑鏄渶綆鍗曠殑錛屼絾鍗存病鏈夊 typedef榪涗竴姝ヨВ閲婏紝浣垮緱涓嶅皯浜虹敤#define鐨勬濈淮鏉ョ湅寰卼ypedef錛屾妸int涓嶱ARA鍒嗗紑鏉ョ湅錛宨nt鏄竴閮ㄥ垎錛孭ARA鏄彟涓閮ㄥ垎錛屼絾瀹為檯涓婃牴鏈氨涓嶆槸榪欎箞涓鍥炰簨銆俰nt涓嶱ARA鏄竴涓暣浣擄紒灝辮薄int i:澹版槑涓鏍鋒槸涓涓暣浣撳0鏄庯紝鍙笉榪噄nt i瀹氫箟浜嗕竴涓彉閲忥紝鑰宼ypedef瀹氫箟浜嗕竴涓埆鍚嶃傝繖浜涗漢鐢變簬鎸佹湁榪欑閿欒鐨勮蹇碉紝灝變細(xì)鏃犳硶鐞嗚В濡備笅涓浜涘0鏄庯細(xì) typedef int a[10]; typedef void (*p)(void); 浠栦滑浼?xì)浠ヤ负a[10]鏄痠nt鐨勫埆鍚嶏紝(*p)(void)鏄痸oid鐨勫埆鍚嶏紝浣嗚繖鏍風(fēng)殑鍒悕鐪嬭搗鏉ュ張浼間箮涓嶆槸鍚堟硶鐨勫悕瀛楋紝浜庢槸闄峰叆鍥版儜涔嬩腑銆傚疄闄呬笂錛屼笂闈㈢殑璇彞鎶奱澹版槑涓哄叿鏈?0涓猧nt鍏冪礌鐨勬暟緇勭殑綾誨瀷鍒悕錛宲鏄竴縐嶅嚱鏁版寚閽堢殑綾誨瀷鍒悕銆?铏界劧鍦ㄥ姛鑳戒笂錛宼ypedef鍙互鐪嬩綔涓涓窡int PARA鍒嗙鐨勫姩浣滐紝浣嗚娉曚笂typedef灞炰簬瀛樺偍綾誨0鏄庤鏄庣錛屽洜姝や弗鏍兼潵璇達(dá)紝typedef int PARA鏁翠釜鏄竴涓畬鏁寸殑澹版槑銆?瀹氫箟涓涓嚱鏁版寚閽堢被鍨嬨?姣斿鍘熷嚱鏁版槸 void func(void); 閭d箞瀹氫箟鐨勫嚱鏁版寚閽堢被鍨嬪氨鏄痶ypedef void (*Fun)(void); 鐒跺悗鐢ㄦ綾誨瀷鐢熸垚涓涓寚鍚戝嚱鏁扮殑鎸囬拡錛?Fun func1; 褰揻unc1鑾峰彇鍑芥暟鍦板潃涔嬪悗錛岄偅涔堜綘灝卞彲浠ュ悜璋冪敤鍘熷嚱鏁伴偅鏍鋒潵浣跨敤榪欎釜鍑芥暟鎸囬拡錛?func1(void);
涓嬮潰涓懼嚑涓緥瀛愶細(xì)
{
銆int iNum;
銆long lLength;
} MyStruct;
char
鏄湁絎﹀彿鐨勮繕鏄棤絎﹀彿鐨勶紝浣嗘槸瑕佹眰緙栬瘧鍣ㄥ繀欏誨姝ゅ仛鍑烘槑紜瀹氾紝騫跺啓鍦ㄧ紪璇戝櫒鐨勬枃妗d腑銆?br /> 瀵逛簬Unspecified鐨勬儏鍐碉紝寰寰鏈夊嚑縐嶅彲閫夌殑澶勭悊鏂瑰紡錛孋鏍囧噯娌℃湁鏄庣‘瑙勫畾鎸夊摢縐嶆柟寮忓鐞嗭紝緙栬瘧鍣ㄥ彲浠ヨ嚜宸卞喅瀹氾紝騫朵笖涔熶笉蹇呭啓鍦ㄧ紪璇戝櫒鐨勬枃妗d腑錛?榪欐牱鍗充究鐢ㄥ悓涓涓紪璇戝櫒鐨勪笉鍚岀増鏈潵緙栬瘧涔熷彲鑳藉緱鍒頒笉鍚岀殑緇撴灉錛屽洜涓虹紪璇戝櫒娌℃湁鍦ㄦ枃妗d腑鏄庣‘鍐欏畠浼?xì)鎬庝箞澶勭悊錛岄偅涔堜笉鍚岀増鏈殑緙栬瘧鍣ㄥ氨鍙互閫夋嫨涓嶅悓鐨勫鐞嗘柟 寮忥紝姣斿涓嬩竴绔犳垜浠細(xì)璁插埌涓涓嚱鏁拌皟鐢ㄧ殑鍚勪釜瀹炲弬琛ㄨ揪寮忔寜浠涔堥『搴忔眰鍊兼槸Unspecified鐨勩?br /> Undefined鐨勬儏鍐靛垯鏄畬鍏ㄤ笉紜畾鐨勶紝C鏍囧噯娌¤瀹氭庝箞澶勭悊錛岀紪璇戝櫒寰堝彲鑳戒篃娌¤瀹氾紝鐢氳嚦涔熸病鍋氬嚭閿欏鐞嗭紝鏈夊緢澶歎ndefined鐨勬儏鍐電紪璇戝櫒鏄鏌ヤ笉鍑烘潵鐨勶紝鏈緇堜細(xì)瀵艱嚧榪愯鏃墮敊璇紝姣斿鏁扮粍璁塊棶瓚婄晫灝辨槸Undefined鐨勩?br /> 鍒濆鑰呯湅鍒拌繖浜涜鍒欓氬父浼?xì)寰堜笉鑸掓湇锛岃寰棙q欎笉鏄湪瀛︾紪紼嬭屾槸鍦ㄥ晝娉曞緥鏉℃枃錛岀粨鏋滆秺瀛﹁秺娉勬皵銆傛槸鐨勶紝C璇█騫朵笉鍍忎竴涓暟瀛﹀畾鐞嗛偅涔堝畬緹庯紝鐜板疄涓栫晫閲岀殑涓滆タ鎬繪槸 涓嶅瀹岀編鐨勩備絾榪樺ソ鍟︼紝C紼嬪簭鍛樺凡緇忓緢騫哥浜嗭紝鍙涓ユ牸閬電収C鏍囧噯鏉ュ啓浠g爜錛屼笉瑕佸幓瑙︾閭d簺闃存殫瑙掕惤錛屽啓鍑烘潵鐨勪唬鐮佸氨鏈夊緢濂界殑鍙Щ妞嶆с傛兂鎯抽偅浜涘彲鎬滅殑 JavaScript紼嬪簭鍛樺惂錛屼粬浠敋鑷寵繛涓涓彲浠ラ伒鐓х殑鏍囧噯閮芥病鏈夛紝涓涓祻瑙堝櫒涓涓牱錛岀敋鑷沖悓涓涓祻瑙堝櫒鐨勪笉鍚岀増鏈篃宸埆寰堝ぇ錛岀▼搴忓憳涓嶅緱涓嶄負(fù)姣忎竴縐嶆祻 瑙堝櫒鐨勬瘡涓涓増鏈垎鍒啓涓嶅悓鐨勪唬鐮併?br />