??xml version="1.0" encoding="utf-8" standalone="yes"?>日本精品久久久久中文字幕8,久久AAAA片一区二区,人人狠狠综合久久亚洲高清http://www.shnenglu.com/nxm1990/category/18157.htmlzh-cnWed, 30 Nov 2011 08:26:18 GMTWed, 30 Nov 2011 08:26:18 GMT60|络~程的小实验Q一Q?/title><link>http://www.shnenglu.com/nxm1990/articles/161092.html</link><dc:creator>is-programmer</dc:creator><author>is-programmer</author><pubDate>Mon, 28 Nov 2011 15:17:00 GMT</pubDate><guid>http://www.shnenglu.com/nxm1990/articles/161092.html</guid><wfw:comment>http://www.shnenglu.com/nxm1990/comments/161092.html</wfw:comment><comments>http://www.shnenglu.com/nxm1990/articles/161092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/nxm1990/comments/commentRss/161092.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/nxm1990/services/trackbacks/161092.html</trackback:ping><description><![CDATA[在没有链接的情况下调用getpeername<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">unistd.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">sys</span><span style="color: #000000; ">/</span><span style="color: #000000; ">socket.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">netinet</span><span style="color: #000000; ">/</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> MAXLINE 80</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> SERV_PORT 8000</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main(){<br />  </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> servsock;<br />  </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">((servsock </span><span style="color: #000000; ">=</span><span style="color: #000000; "> socket(AF_INET,SOCK_STREAM,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)) </span><span style="color: #000000; "><</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">){<br />    perror(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">socket</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />    exit(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />  }<br />  </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> sockaddr_in peer;<br />  memset(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">peer,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(peer));<br />  socklen_t peerlen </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(peer);<br />  </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> ret;<br />  </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">((ret </span><span style="color: #000000; ">=</span><span style="color: #000000; "> getpeername(servsock,(</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> sockaddr</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&</span><span style="color: #000000; ">peer,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">peerlen)) </span><span style="color: #000000; "><</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">){<br />    perror(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">getpeername</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />    exit(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />  }<br />  </span><span style="color: #0000FF; ">char</span><span style="color: #000000; "> meg[</span><span style="color: #000000; ">100</span><span style="color: #000000; ">];<br />  inet_ntop(AF_INET,</span><span style="color: #000000; ">&</span><span style="color: #000000; ">peer,meg,peerlen);<br />  printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,meg);<br />}<br /></span></div>l果Q?span class="Apple-style-span" style="font-size: 13px; background-color: #eeeeee; "><span style="color: #000000; ">getpeername: Transport endpoint </span><span style="color: #0000FF; ">is</span><span style="color: #000000; "> not connected</span></span><img src ="http://www.shnenglu.com/nxm1990/aggbug/161092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/nxm1990/" target="_blank">is-programmer</a> 2011-11-28 23:17 <a href="http://www.shnenglu.com/nxm1990/articles/161092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于C中的文g描述W关联C++ ?iostreamhttp://www.shnenglu.com/nxm1990/articles/160548.htmlis-programmeris-programmerSun, 20 Nov 2011 04:55:00 GMThttp://www.shnenglu.com/nxm1990/articles/160548.htmlhttp://www.shnenglu.com/nxm1990/comments/160548.htmlhttp://www.shnenglu.com/nxm1990/articles/160548.html#Feedback0http://www.shnenglu.com/nxm1990/comments/commentRss/160548.htmlhttp://www.shnenglu.com/nxm1990/services/trackbacks/160548.html

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);

This is a frequent question, and the answer is probably "no". At least with respect to standard C++, there's no way to obtain a descriptor from an fstream object or bind an fstream object to a descriptor. The reason, as your book suggested, is implementation dependecies. Just as new doesn't necessarily have to use malloc() to allocate raw memory, the fstream library isn't required to use stdio.h as its underlying implementation.

 



is-programmer 2011-11-20 12:55 发表评论
]]>
C中的side effect ?sequence point http://www.shnenglu.com/nxm1990/articles/160085.htmlis-programmeris-programmerMon, 14 Nov 2011 07:08:00 GMThttp://www.shnenglu.com/nxm1990/articles/160085.htmlhttp://www.shnenglu.com/nxm1990/comments/160085.htmlhttp://www.shnenglu.com/nxm1990/articles/160085.html#Feedback0http://www.shnenglu.com/nxm1990/comments/commentRss/160085.htmlhttp://www.shnenglu.com/nxm1990/services/trackbacks/160085.htmlwiki ?sequence point 定义Q?/span>
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++定义了一些sequence pointQ在下一个sequence point 执行之前必须把前一个执行完Q但是问题是在一个sequence point 和另一个之间还有一些side effect。由于这些就引出一些有的问题?div style="display: inline-block; ">
条gq算W?:、逗号q算W、逻辑?amp;&、逻辑或||的每一个操作数求g后是Sequence Point?br />问题一Q?br />
f(g( ), h( ) );
先执行谁Q答Qg( ),h( ) 的顺序不定Q它们执行之后才执行f ( );
问题二:
int i = 1;i = i ++;
l果是? {:undefinedQ因为我们知道i++ 是先q回再改变i的值的Q那么赋D句右边就有了gQ那么就存在q样的两U情况:1,i先赋??+Q那么i现在?Q?Q先++Q然后赋|注意此时赋值的内容是还?+的|所以i?Q根据不同的~译器会得出不同的结果的?br />问题三:
int a  = 1; a = (++a)+(++a)+(++a);
l果是?{:undefined,q个的问题是Q到底是先把每个++执行完之后才q行加法q是先把前两个先加再执行最后一?+Q两者的{案分别?Q?1。当然还有其他情c?br />问题四:
int i = 1int a[10]={0}; a[i++= i;
{:同问?.
所以我们要坚持的原则是Q?div style="display: inline-block; ">在两个Sequence Point之间Q同一个变量的值只允许被改变一?/em>?/span>







is-programmer 2011-11-14 15:08 发表评论
]]>
C中的Comma Operator和typedefQsizeofhttp://www.shnenglu.com/nxm1990/articles/160083.htmlis-programmeris-programmerMon, 14 Nov 2011 06:12:00 GMThttp://www.shnenglu.com/nxm1990/articles/160083.htmlhttp://www.shnenglu.com/nxm1990/comments/160083.htmlhttp://www.shnenglu.com/nxm1990/articles/160083.html#Feedback0http://www.shnenglu.com/nxm1990/comments/commentRss/160083.htmlhttp://www.shnenglu.com/nxm1990/services/trackbacks/160083.html逗号q算W(Comma OperatorQ?a id="id2762605" class="indexterm" style="color: blue; text-decoration: underline; ">也是一U双目运符Q它的Ş式是表达?, 表达?Q两个表辑ּ不要求类型一_左边的表辑ּ1先求|求完了直接把g掉,再求双表达?的g为整个表辑ּ的倹{?div style="display: inline-block; ">注意Q函数调用时各实参之间也是用逗号隔开Q这U逗号是分隔符而不是逗号q算W。但可以q样使用逗号q算W:
f(a, (t=3, t+2), c)
sizeof是一个很Ҏ的运符Q它有两UŞ式:“sizeof 表达?/span>”?#8220;sizeof(cd?”。这个运符很特D,“sizeof 表达?/span>”中的子表辑ּq不求|而只是根据类型{换规则求得子表达式的cdQ然后把q种cd所占的字节C为整个表辑ּ的倹{有些h喜欢写成“sizeof(表达?”的Ş式也可以?br />sizeofq算W的l果?code class="literal">size_tcd的,q个cd定义?code class="literal">stddef.h头文件中Q不q你的代码中只要不出?code class="literal">size_tq个cd名就不用包含q个头文Ӟ比如像上面的例子׃用包含这个头文g。C标准规定size_t是一U无W号整型Q编译器可以?code class="literal">typedef做一个类型声明,
那么size_t׃?code class="literal">unsigned long型。不同^台的~译器可能会Ҏ自己q_的具体情况定?code class="literal">size_t所代表的类型,比如有的q_定义?code class="literal">unsigned long型,有的q_定义?code class="literal">unsigned long long型,C标准规定size_tq个名字是Z隐藏q些l节Q代码h可移植性?br />
   typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以里不会生什么误解的Q但l果却出乎意料,产生误解的h不在数。罪祸首又是那些害人的教材。在q些教材中介ltypedef的时候通常会写出如下Ş式: typedef int PARA; q种形式?define int PARA几乎一Pq些教材的宗旨是由浅入深Q但实际做出来的行ؓ却是以偏盖全。的,q种形式在所有Ş式中是最单的Q但却没有对 typedefq一步解释,使得不少人用#define的思维来看待typedefQ把int与PARA分开来看Qint是一部分QPARA是另一部分Q但实际上根本就不是q么一回事。int与PARA是一个整体!pint i:声明一h一个整体声明,只不qint i定义了一个变量,而typedef定义了一个别名。这些h׃持有q种错误的观念,׃无法理解如下一些声明: typedef int a[10]; typedef void (*p)(void); 他们会以为a[10]是int的别名,(*p)(void)是void的别名,但这L别名看v来又g不是合法的名字,于是陷入困惑之中。实际上Q上面的语句把a声明为具?0个int元素的数l的cd别名Qp是一U函数指针的cd别名?虽然在功能上Qtypedef可以看作一个跟int PARA分离的动作,但语法上typedef属于存储cd明说明符Q因此严格来_typedef int PARA整个是一个完整的声明?定义一个函数指针类型?比如原函数是 void func(void); 那么定义的函数指针类型就是typedef void (*Fun)(void); 然后用此cd生成一个指向函数的指针Q?Fun func1; 当func1获取函数地址之后Q那么你可以向调用原函数那h使用q个函数指针Q?func1(void);
下面丑և个例子:

typedef struct tagMyStruct

 
int iNum;
 
long lLength;
} MyStruct;
下一?br />

typedef struct tagNode
{
 
char *pItem;
 pNode pNext;
*pNode;
~译错误Q?div style="display: inline-block; ">C语言当然允许在结构中包含指向它自q指针Q我们可以在建立链表{数据结构的实现上看到无数这L例子Q上qC码的Ҏ问题在于typedef的应用。正的Q?br />

typedef struct tagNode 
{
 
char *pItem;
 
struct tagNode *pNext;
*pNode;






is-programmer 2011-11-14 14:12 发表评论
]]>
ANSI C 的标?/title><link>http://www.shnenglu.com/nxm1990/articles/160067.html</link><dc:creator>is-programmer</dc:creator><author>is-programmer</author><pubDate>Mon, 14 Nov 2011 04:40:00 GMT</pubDate><guid>http://www.shnenglu.com/nxm1990/articles/160067.html</guid><wfw:comment>http://www.shnenglu.com/nxm1990/comments/160067.html</wfw:comment><comments>http://www.shnenglu.com/nxm1990/articles/160067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/nxm1990/comments/commentRss/160067.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/nxm1990/services/trackbacks/160067.html</trackback:ping><description><![CDATA[<div>   大部分的关于C的著作都提到ANSI C StandardQ但我相信少有CE序员真正细致阅读过ANSI C标准QC标准规定了一些原则,充分l了~译器程序员权力Q根据具体^台的Ҏ去军_一些规则。C标准的Rationale之一Q?em>优先考虑效率Q而可UL性尚在其?/em>?br />Implementation-defined、Unspecified和Undefined<br />   在C标准中没有做明确规定的地方会用Implementation-defined、Unspecified或Undefined来表qͼ在本书中有时把这三种情况l称?#8220;未明定?#8221;的。这三种情况到底有什么不同呢Q?br />   我们刚才看到一UImplementation-defined的情况,C标准没有明确规定<code>char</code>是有W号的还是无W号的,但是要求~译器必d此做出明规定,q写在编译器的文中?br />   对于Unspecified的情况,往往有几U可选的处理方式QC标准没有明确规定按哪U方式处理,~译器可以自己决定,q且也不必写在编译器的文中Q?q样即便用同一个编译器的不同版本来~译也可能得C同的l果Q因为编译器没有在文中明确写它会怎么处理Q那么不同版本的~译器就可以选择不同的处理方 式,比如下一章我们会讲到一个函数调用的各个实参表达式按什么顺序求值是Unspecified的?br />   Undefined的情况则是完全不定的,C标准没规定怎么处理Q编译器很可能也没规定,甚至也没做出错处理,有很多Undefined的情늼译器是检查不出来的,最l会Dq行旉误,比如数组讉K界是Undefined的?br />   初学者看到这些规则通常会很不舒服,觉得q不是在学编E而是在啃法律条文Q结果越学越泄气。是的,C语言q不像一个数学定理那么完,现实世界里的东西L 不够完美的。但q好啦,CE序员已l很q福了,只要严格늅C标准来写代码Q不要去触碰那些阴暗角落Q写出来的代码就有很好的可移植性。想想那些可怜的 JavaScriptE序员吧Q他们甚臌一个可以遵照的标准都没有,一个浏览器一个样Q甚臛_一个浏览器的不同版本也差别很大Q程序员不得不ؓ每一U浏 览器的每一个版本分别写不同的代码?br /></div><img src ="http://www.shnenglu.com/nxm1990/aggbug/160067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/nxm1990/" target="_blank">is-programmer</a> 2011-11-14 12:40 <a href="http://www.shnenglu.com/nxm1990/articles/160067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.orange-cat.cn" target="_blank">ƷþùƷ99</a>| <a href="http://www.92loc.cn" target="_blank">þþþþƷ66</a>| <a href="http://www.gofiv.cn" target="_blank">ֻƬþøպ</a>| <a href="http://www.gofiv.cn" target="_blank">97㽶þҹɫƷ</a>| <a href="http://www.lingxiu98.com.cn" target="_blank">þˬˬƬAV</a>| <a href="http://www.qnui.cn" target="_blank">þþžѾƷ6</a>| <a href="http://www.gjgwyks.cn" target="_blank">ŷһþþƷ</a>| <a href="http://www.huiseng.cn" target="_blank">ƷѾþþþӰԺ</a>| <a href="http://www.37eee.cn" target="_blank">ҹҹݺݾþAV</a>| <a href="http://www.jp3.com.cn" target="_blank">þþƷһӰ</a>| <a href="http://www.ads9.cn" target="_blank">˸ŮѲžþþ</a>| <a href="http://www.lushihu.cn" target="_blank">þۺ³³</a>| <a href="http://www.jejf.cn" target="_blank">þþƷһ99</a>| <a href="http://www.vxfawh.cn" target="_blank">2019þþø456</a>| <a href="http://www.mtsjnlaliji-syj.cn" target="_blank">þþùƷһ </a>| <a href="http://www.sgcam.com.cn" target="_blank">þþƷ?Ļ</a>| <a href="http://www.shenpenghw.cn" target="_blank">պþëƬ</a>| <a href="http://www.interagency.cn" target="_blank">AVվþþƷ</a>| <a href="http://www.bethesdagroup.cn" target="_blank">Ʒ۲ӰԺþ</a>| <a href="http://www.milliondollarhomepage.cn" target="_blank">պŷ޹ƷĻþþ</a>| <a href="http://www.my163.net.cn" target="_blank">ƷþþþþþþþӰԺ</a>| <a href="http://www.lzjsyg.cn" target="_blank">޹Ʒþһ </a>| <a href="http://www.zzjinhua.cn" target="_blank">þۺϺݺۺϾþ97ɫ</a>| <a href="http://www.myrtv.cn" target="_blank">þþþ99ƷƬŷ </a>| <a href="http://www.fandele.cn" target="_blank">þˮav뾫Ʒ鶹</a>| <a href="http://www.888su.cn" target="_blank">99þþƷѹۿ</a>| <a href="http://www.buding-00.cn" target="_blank">þۺϾþۺϾþ</a>| <a href="http://www.ai7c.cn" target="_blank">99þѹƷ</a>| <a href="http://www.bilili.com.cn" target="_blank">˾þô߽ۺվ</a>| <a href="http://www.shiyana.cn" target="_blank">ŷþþþ9999</a>| <a href="http://www.jjshjlbf.cn" target="_blank">þþƷ˹ҹ</a>| <a href="http://www.riseguide.com.cn" target="_blank">2021˾Ʒþ</a>| <a href="http://www.41422.com.cn" target="_blank">þþþþþòҰ¸߳ </a>| <a href="http://www.iioki.cn" target="_blank">þۺϹapp</a>| <a href="http://www.cnsei.cn" target="_blank">þþƷ99þþ㽶</a>| <a href="http://www.b3382.cn" target="_blank">Ʒ99þþƷ</a>| <a href="http://www.clg8.cn" target="_blank">þþƷ77777</a>| <a href="http://www.xsq1.cn" target="_blank">ڵСþþþþþ</a>| <a href="http://www.jia-hua.cn" target="_blank">þٸ۲AV</a>| <a href="http://www.jxfic.org.cn" target="_blank">ۺϾƷ㽶þ97</a>| <a href="http://www.t2tt.cn" target="_blank">þþƷһ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>