<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C/C++ </title><link>http://blog.vckbase.com/eyesonyhm/category/1079.html</link><description>C/C++ </description><managingEditor>程序员奶爸</managingEditor><dc:language>af</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>程序员奶爸</dc:creator><title>Using a class in a namespace with the same name?</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/06/03/45099.html</link><pubDate>Thu, 03 Jun 2010 06:21:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/06/03/45099.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/45099.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/06/03/45099.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/45099.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/45099.html</trackback:ping><description>&lt;P&gt;If I define a namespace and class like:&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG id=Codehighlighter1_11_100_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_100_Open_Text.style.display='none'; Codehighlighter1_11_100_Closed_Image.style.display='inline'; Codehighlighter1_11_100_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_11_100_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_100_Closed_Text.style.display='none'; Codehighlighter1_11_100_Open_Image.style.display='inline'; Codehighlighter1_11_100_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;A&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_11_100_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_11_100_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;A&lt;BR&gt;&lt;IMG id=Codehighlighter1_22_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_22_96_Open_Text.style.display='none'; Codehighlighter1_22_96_Closed_Image.style.display='inline'; Codehighlighter1_22_96_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_22_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_96_Closed_Text.style.display='none'; Codehighlighter1_22_96_Open_Image.style.display='inline'; Codehighlighter1_22_96_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_96_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_96_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;A()&lt;BR&gt;&lt;IMG id=Codehighlighter1_40_44_Open_Image onclick="this.style.display='none'; Codehighlighter1_40_44_Open_Text.style.display='none'; Codehighlighter1_40_44_Closed_Image.style.display='inline'; Codehighlighter1_40_44_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_40_44_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_40_44_Closed_Text.style.display='none'; Codehighlighter1_40_44_Open_Image.style.display='inline'; Codehighlighter1_40_44_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_40_44_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_40_44_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;~&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;A()&lt;BR&gt;&lt;IMG id=Codehighlighter1_55_59_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_59_Open_Text.style.display='none'; Codehighlighter1_55_59_Closed_Image.style.display='inline'; Codehighlighter1_55_59_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_55_59_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_59_Closed_Text.style.display='none'; Codehighlighter1_55_59_Open_Image.style.display='inline'; Codehighlighter1_55_59_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_55_59_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_55_59_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Foo()&lt;BR&gt;&lt;IMG id=Codehighlighter1_75_93_Open_Image onclick="this.style.display='none'; Codehighlighter1_75_93_Open_Text.style.display='none'; Codehighlighter1_75_93_Closed_Image.style.display='inline'; Codehighlighter1_75_93_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_75_93_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_75_93_Closed_Text.style.display='none'; Codehighlighter1_75_93_Open_Image.style.display='inline'; Codehighlighter1_75_93_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_75_93_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_75_93_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;In VS, there is an error &amp;#8220;ambiguous symbol&amp;#8221;&amp;nbsp;when I use class A like:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;A;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;_tmain(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;_TCHAR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argv[])&lt;BR&gt;&lt;IMG id=Codehighlighter1_57_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_80_Open_Text.style.display='none'; Codehighlighter1_57_80_Closed_Image.style.display='inline'; Codehighlighter1_57_80_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_57_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_80_Closed_Text.style.display='none'; Codehighlighter1_57_80_Open_Image.style.display='inline'; Codehighlighter1_57_80_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_57_80_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_57_80_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;A&amp;nbsp;a;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;Who can give me the reason? Thanks.&lt;BR&gt;&lt;BR&gt;I know there are two ways to solve it:&lt;BR&gt;1, In code, use A::A instead of using.&lt;BR&gt;2. Use typedef A::A shortname;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/45099.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>程序员奶爸</dc:creator><title>Motto of the Harvard Library on the wall</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/06/02/44771.html</link><pubDate>Wed, 02 Jun 2010 02:54:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/06/02/44771.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/44771.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/06/02/44771.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/44771.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/44771.html</trackback:ping><description>&lt;H2 class=article-title&gt;&lt;FONT size=5&gt;1. This moment will nap, you will have a dream; But this moment study, you will interpret a dream. &lt;BR&gt;Moment will nap, you will have a dream; But this moment study, you will interpret a dream. &lt;BR&gt;2. I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored. &lt;BR&gt;I wasted today, was precisely yesterday perishes person of the body implored. &lt;BR&gt;3. Thought is already is late, exactly is the earliest time. &lt;BR&gt;think it is too late, exactly is the earliest time. &lt;BR&gt;4. Not matter of the today will drag tomorrow. &lt;BR&gt;Do not wait until tomorrow. &lt;BR&gt;5. Time the study pain is temporary, has not learned the pain is life-long. &lt;BR&gt;the study pain is temporary, has not learned the pain is life. &lt;BR&gt;6. Studies this matter, lacks the time, but is lacks diligently. &lt;BR&gt;study this matter, lacks the time, but the lack of effort. &lt;BR&gt;7. Perhaps happiness does not arrange the position, but succeeds must arrange the position. &lt;BR&gt;not the life, but succeeds must arrange the position. &lt;BR&gt;8. The study certainly is not the life complete. But, since continually life part of - studies also is unable to conquer, what but lso can make? &lt;BR&gt;learn not the life complete. However, since even the life part of - studies also is unable to conquer, what butalso can make? &lt;BR&gt;9. Please enjoy the pain which is unable to avoid. &lt;BR&gt;Please enjoy the unavoidable suffering. &lt;BR&gt;10.only has compared to the others early, diligently diligently, can feel the successful taste. &lt;BR&gt;compared to the others early, diligently efforts, can feel the successful taste. &lt;BR&gt;11. Nobody can casually succeed, it comes from the thorough self-control and the will. &lt;BR&gt;who can casually succeed, it comes from the thorough self-management and perseverance. &lt;BR&gt;12. The time is passing. &lt;BR&gt;time is passing. &lt;BR&gt;13. Now drips the saliva, will become tomorrow the tear. &lt;BR&gt;Now drips the saliva, will become tomorrow the tear. &lt;BR&gt;14. The dog equally study, the gentleman equally plays. &lt;BR&gt;dog equally study, the gentleman equally plays. &lt;BR&gt;15. Today does not walk, will have to run tomorrow. &lt;BR&gt;Today does not walk, run tomorrow. &lt;BR&gt;16. The investment future person will be, will be loyal to the reality person. &lt;BR&gt;investment future person will be loyal to the reality person. &lt;BR&gt;17. The education level represents the income. &lt;BR&gt;education level represents the income. &lt;BR&gt;18.one day, has not been able again to come. &lt;BR&gt;day, has not come back. &lt;BR&gt;19. Even if the present, the match does not stop changes the page. &lt;BR&gt;Even now, the match does not stop changes the page. &lt;BR&gt;20. Has not been difficult, then does not have attains &lt;BR&gt;not difficult, then does. &lt;/FONT&gt;&lt;/H2&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/44771.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>程序员奶爸</dc:creator><title>PC Lint Integration in VS, ClearCase</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/05/16/42379.html</link><pubDate>Sun, 16 May 2010 02:08:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/05/16/42379.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/42379.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/05/16/42379.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/42379.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/42379.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 11pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;In this article, I want to talk about how to integrate PCLint, ClearCase and VS.net together. First, in order to let every team member use PCLint in the same way, we should put PCLint program, company common rules and company&amp;#8217;s wrapper file into Clearcase. The directory structure in ClearCase is as below: &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 14.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt" vAlign=top width=84&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Wrapper&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 365.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" vAlign=top width=487&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Private command wrapper sets&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Rules&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 365.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=487&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Private rule sets&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 63pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=84&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Gimpel&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 365.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=487&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Original Gimpel Software&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 11pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;In &amp;#8220;Wrapper&amp;#8221; directory, there are two main files called &amp;#8220;PCLint_VC_Project.cmd&amp;#8221; and &amp;#8220;Proj2lnt.pl&amp;#8221;, I want to use a diagram to explain the relationship and functions between them. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 11pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face=Arial&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-language: ZH-CN"&gt;&lt;IMG height=257 src="/images/vckbase_com/eyesonyhm/Drawing.JPG" width=650 border=0&gt;&lt;BR&gt;&lt;BR&gt;The &amp;#8220;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;PCLint_VC_Project.cmd&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-language: ZH-CN"&gt;&amp;#8221; file is an entry for lint the source file/project in VS. We can add a plug in VS SDE. You can referenced the related article at:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;http://blog.vckbase.com/eyesonyhm/archive/2010/05/14/42330.html&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Syntax:&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;PCLint_VC_Project.cmd Project Configuration RuleSet [File]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Example: &lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;PCLint_VC_Project.cmd example.vcproj Debug [abc.cpp]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Without specifying a [File] the whole project is linted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;The lint wrapper works in three steps. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0cm" type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;The vcproj file is translated into the lint format by Proj2lnt.pl script.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;The translated lint rule and a rule set file is used for linting the project / file by lint-nt.exe&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;Output the message from PCLint&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;The file &amp;#8220;Proj2lnt.pl&amp;#8221; is used to translate the vcproj file in to lint format. Because in every lint process, it needs the configuration from project file, like include path, macro definition etc.&lt;BR&gt;&lt;o:p&gt;The related file is in:&lt;BR&gt;&lt;A href="http://blog.vckbase.com/Files/eyesonyhm/proj2lnt.zip"&gt;http://blog.vckbase.com/Files/eyesonyhm/proj2lnt.zip&lt;/A&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/42379.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>程序员奶爸</dc:creator><title>Installation of PC-Lint and its using in Visual Studio 2005</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/05/14/42330.html</link><pubDate>Fri, 14 May 2010 05:30:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/05/14/42330.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/42330.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/05/14/42330.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/42330.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/42330.html</trackback:ping><description>I have referenced an article to introduce &amp;#8220;Installation of PC-Lint and its using in Visual Studio 2005&amp;#8221;. This is enough for beginner to understand PCLint and start to use it.&lt;BR&gt;&lt;BR&gt;The article is in:&lt;BR&gt;&lt;A href="http://blog.vckbase.com/Files/eyesonyhm/Installation%20of%20PC-Lint%20and%20its%20using%20in%20Visual%20Studio%202005.zip"&gt;http://blog.vckbase.com/Files/eyesonyhm/Installation%20of%20PC-Lint%20and%20its%20using%20in%20Visual%20Studio%202005.zip&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;The reference adress is at:&lt;BR&gt;&lt;A href="http://www.viva64.com/content/articles/code-analyzers/?f=PC-lint.html&amp;amp;lang=en&amp;amp;content=code-analyzers"&gt;http://www.viva64.com/content/articles/code-analyzers/?f=PC-lint.html&amp;amp;lang=en&amp;amp;content=code-analyzers&lt;/A&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/42330.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>程序员奶爸</dc:creator><title>PCLint</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41914.html</link><pubDate>Wed, 05 May 2010 03:00:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41914.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/41914.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41914.html#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/41914.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/41914.html</trackback:ping><description>&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22pt; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-ansi-language: DE; mso-fareast-language: ZH-CN"&gt;最近项目正在使用&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;SPAN lang=DE style="mso-ansi-language: DE; mso-fareast-language: ZH-CN"&gt;PC-&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;Lint&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-ansi-language: DE; mso-fareast-language: ZH-CN"&gt;做代码的静态检查，从一开始对它的不了解抵触它，到现在我希望用一系列的文章来介绍它，的确个人认为它是一个不错的静态代码检测工具。它不但能够监测出许多语法逻辑上的隐患，而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。不仅对于个人或者公司，&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;做代码静态检查都是具有明显的好处：&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 40pt; TEXT-INDENT: -18pt; TEXT-ALIGN: justify; mso-list: l1 level1 lfo1; tab-stops: list 40.0pt"&gt;&lt;SPAN lang=EN-US style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial&gt;1．&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;对于公司可以控制代码的质量，使代码符合公司的代码规范，从而尽可能减少&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;bug&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的产生。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 40pt; TEXT-INDENT: -18pt; TEXT-ALIGN: justify; mso-list: l1 level1 lfo1; tab-stops: list 40.0pt"&gt;&lt;SPAN lang=EN-US style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial&gt;2．&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;可以通过&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的检查代码，从而发现代码运行效率上的改进点，改进代码运行效率。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 40pt; TEXT-INDENT: -18pt; TEXT-ALIGN: justify; mso-list: l1 level1 lfo1; tab-stops: list 40.0pt"&gt;&lt;SPAN lang=EN-US style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial&gt;3．&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;对于个人也是一个学习的过程，个人可以从&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;报出的&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;error&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;里学习到自己写的代码到底还有哪些不足的地方，并且可以思考这些不足的地方为什么&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;认为是一个可以改进点，从而使自己的程序日臻完美，完全用实践来证明理论，而不是天天拿着&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;Effective C++/More Effective C++&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;诵读。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 22pt; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;这么多的优点，没有理由不让你了解&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;，所以我准备下一步用另外两篇文章来介绍&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 40pt; TEXT-INDENT: -18pt; TEXT-ALIGN: justify; mso-list: l0 level1 lfo2; tab-stops: list 40.0pt"&gt;&lt;SPAN lang=EN-US style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的安装、设置以及公司内部&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint Criteria&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的设立，这部分需要结合&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;Clear-Case&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;来说明对于一个企业是如何全局控制&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的安装与&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;rule&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;版本的。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt 40pt; TEXT-INDENT: -18pt; TEXT-ALIGN: justify; mso-list: l0 level1 lfo2; tab-stops: list 40.0pt"&gt;&lt;SPAN lang=EN-US style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Arial&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;的使用，在这里会根据个人在项目中的经验对一些常见的&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;rule&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"&gt;进行解释，并根据自己的切身体会介绍如何用好&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="mso-fareast-language: ZH-CN"&gt;&lt;FONT face=Arial&gt;PC-Lint.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/41914.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>程序员奶爸</dc:creator><title>未定义行为[Undefined Behavior]</title><link>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41908.html</link><pubDate>Wed, 05 May 2010 02:49:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41908.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/41908.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2010/05/05/41908.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/41908.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/41908.html</trackback:ping><description>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=EN-US&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 25pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;很多地方出现未定义行为，可每每当它出现时，我们都不知道它是一个未定义行为，或者只是单纯的理解成一个错误。使用未定义行为直接带来的后果是：编译器碰到此类情况可以为所欲为。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 25pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;人类的恐惧来自对一个事物的无知，但追求问题解的过程又充满了痛苦。所以在追求把所有的未定义行为都总结出来这个过程中，发现很难，也根本没有办法能一个一个进行解释。但为了让我们更严谨的写程序，我又十分的想把未定义行为总结全。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 25pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;什么是未定义行为，引用标准委员会的解释：&amp;#8220;使用了某些错误程序行为或者错误数据都会产生未定义行为。当&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=Arial&gt;ISO&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;标准没有对任何具有明显定义的行为进行描述时，也将导致未定义的行为。【&lt;I&gt;注：&lt;/I&gt;可能的未定义的行为包括完全忽略产生不可预测结果的情况，这些行为在&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-ansi-language: DE"&gt;编译&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;或程序执行时产生环境特定的，有文档描述的行为（可能同时发布出诊断消息），或者直接终止编译或执行（并发布诊断消息）。许多错误的程序构造不会造成未定义行为，这样的程序就需要被诊断。】&amp;#8220;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;可能上面的定义比较晦涩难以理解，我想用白话说说，第一、使用错误程序代码或者错误的数据（如下面讲的使用未初始化数据）都将导致未定义行为。第二、标准委员会明确定义出来某些行为是未定义行为，在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=Arial&gt;ISO C++&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;标准里有描述。第三、如果标准委员会的文档里没有定义出来，但已经具有某种意义的程序代码或者说程序行为，那么它也被认为是未定义的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;有可能上面的解释还是不够直接，那么搜集了一些常见的未定义行为：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;读取一个未初始化的值会引起未定义行为；&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;对于越界的类型赋值会引起未定义行为；&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;连接一般的字符串&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt; literal &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;和&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;宽字符串&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt; literal &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;的结果是未定义行为；&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;创建空引用致在运行期发生未定义的行为；&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;任何对一个未实现的纯虚函数的直接或间接调用都会导致未定义行为；&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;对一个非&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt; new &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;返回的指针使用&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt; delete &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;是未定义行为；&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;异常离开析构函数&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;是未定义行为&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 43pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 43.0pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&amp;#178;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;继续添加中&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;&amp;#8230;&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 22pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;FONT face=Arial&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 22pt"&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"&gt;还有个简单的方法可以在&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=Arial&gt;ISO C++&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;标准文档里搜索&lt;/SPAN&gt;&lt;SPAN lang=EN-US&gt;&lt;FONT face=Arial&gt;Undefined Behavior&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;，也可以找到很多未定义行为。&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="COLOR: black; mso-bidi-font-family: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/41908.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>遇君阁</dc:creator><title>遇到const修饰typedef所定义的类型时，请注意！</title><link>http://blog.vckbase.com/eyesonyhm/archive/2008/05/14/33618.html</link><pubDate>Wed, 14 May 2008 04:55:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2008/05/14/33618.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/33618.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2008/05/14/33618.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/33618.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/33618.html</trackback:ping><description>&lt;P&gt;有一次我在VS中遇到这样的一个编译错误，代码如下（程序1）：&lt;BR&gt;typedef char * string;&lt;/P&gt;
&lt;P&gt;class A&lt;BR&gt;{&lt;BR&gt;private:&lt;BR&gt;&amp;nbsp;char value[256];&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;const string getValue() const&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;return value;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;int _tmain(int argc, _TCHAR* argv[])&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;BR&gt;编译错误：error C2440: 'return' : cannot convert from 'const char [256]' to 'const string'&lt;BR&gt;为什么会有这样的编译错误呢？不是数组名可以转换成一个指针吗（此主题可参考），按此原理类推应该可以实现此类型转换。于是我改写代码（程序2）：&lt;BR&gt;typedef char * string;&lt;/P&gt;
&lt;P&gt;class A&lt;BR&gt;{&lt;BR&gt;private:&lt;BR&gt;&amp;nbsp;char value[256];&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;&lt;FONT color=#ff0000&gt;const&amp;nbsp;char *&lt;/FONT&gt;&amp;nbsp;getValue() const&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;return value;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;int _tmain(int argc, _TCHAR* argv[])&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;BR&gt;这时编译这段代码却没有错误乐。为什么呢？原因在于在程序1中const从整体上修饰类型别名string（char *），那么就相当于char * const，表示char类型的指针为常量，所以就出现上述的编译错误。错误的根本原因就是我把typedef主观认为可以与#define等同，而typedef实际上却是定义一种类型的别名，而不只是简单的宏替换。这次经历也告诉我一个道理：不能凭主观或者说错误的观点进行推测，而应该认识到实践才是检验真理的唯一标准。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/33618.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>遇君阁</dc:creator><title>简单查看unicode编码对应的字符</title><link>http://blog.vckbase.com/eyesonyhm/archive/2008/05/12/33602.html</link><pubDate>Mon, 12 May 2008 04:55:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2008/05/12/33602.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/33602.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2008/05/12/33602.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/33602.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/33602.html</trackback:ping><description>In word, you can use the ALT+X keyboard shortcut to enter the character directly in your document.
&lt;OL&gt;
&lt;LI&gt;Type the Unicode (hexadecimal) value of the character. 
&lt;P&gt;&lt;B&gt;Note&lt;/B&gt;&amp;nbsp;&amp;nbsp;The value string can also begin with U+.&lt;/P&gt;
&lt;LI&gt;Press ALT+X. 
&lt;P&gt;Microsoft Word replaces the string to the left of the insertion point with the character you specified.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/33602.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>遇君阁</dc:creator><title>请仔细权衡内存对齐</title><link>http://blog.vckbase.com/eyesonyhm/archive/2008/05/07/33555.html</link><pubDate>Wed, 07 May 2008 03:28:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2008/05/07/33555.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/33555.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2008/05/07/33555.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/33555.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/33555.html</trackback:ping><description>&lt;P&gt;字节对齐的目的是什么？&lt;BR&gt;1.增加内存利用率&lt;BR&gt;2.增加程序的运行效率&lt;BR&gt;但这两点有时候在内存对齐时却是相互违背的。比如我们来对比下面的程序，在此之前声明一下我的环境，x86（P4）,VC 2005：&lt;BR&gt;程序1&lt;BR&gt;#pragma pack(4)&lt;BR&gt;class A&lt;BR&gt;{&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;char a;&lt;BR&gt;&amp;nbsp;int aa;&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;程序2&lt;BR&gt;#pragma pack(1)&lt;BR&gt;class B&lt;BR&gt;{&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;char a;&lt;BR&gt;&amp;nbsp;int aa;&lt;/P&gt;
&lt;P&gt;};&lt;BR&gt;类A的size是8,而B的size是5,A相对于B来说浪费了内存空间，但同时我们还要看看对于A和B中的成员aa，aa的地址在类A中是可以被4整除（即：addr(A::aa)%4=0）,而aa在类B中由于内存对齐方式是1,所以aa的地址无法被4整除（即：addr(A::aa)%4!=0）．那么由于在x86（32位）上，从无法被4整除的地址边界去访问变量，会影响效率，具体原因已经超出了本文的讨论范围，以后用另一篇文章讨论．这里只放一个测试用例，如果有兴趣的朋友可以运行一下（VC 2005）：&lt;BR&gt;测试用例１：&lt;BR&gt;inline&amp;nbsp;&amp;nbsp; unsigned&amp;nbsp;&amp;nbsp; __int64&amp;nbsp;&amp;nbsp; GetCycleCount(void)&amp;nbsp;&amp;nbsp; &lt;BR&gt;{&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _emit&amp;nbsp;&amp;nbsp; 0x0F&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _emit&amp;nbsp;&amp;nbsp; 0x31&amp;nbsp;&amp;nbsp; &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;int _tmain(int argc, _TCHAR* argv[])&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;long long l = 3000000000000;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp; __int64 begin = GetCycleCount();&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;for(long long i = 1000000000; i &amp;gt; 0; i--)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;// Empty the cache in CPU.&lt;BR&gt;&amp;nbsp;&amp;nbsp;l--;&lt;BR&gt;&amp;nbsp;&amp;nbsp;// Access the memory as the address can be divided by 4&lt;BR&gt;&amp;nbsp;&amp;nbsp;__asm&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ecx,dword ptr [l]&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp; __int64 end = GetCycleCount();&lt;BR&gt;&amp;nbsp;printf("The elapse time is:%I64d\n", end - begin);&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;BR&gt;测试用例２：&lt;BR&gt;inline&amp;nbsp;&amp;nbsp; unsigned&amp;nbsp;&amp;nbsp; __int64&amp;nbsp;&amp;nbsp; GetCycleCount(void)&amp;nbsp;&amp;nbsp; &lt;BR&gt;{&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _emit&amp;nbsp;&amp;nbsp; 0x0F&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _emit&amp;nbsp;&amp;nbsp; 0x31&amp;nbsp;&amp;nbsp; &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;int _tmain(int argc, _TCHAR* argv[])&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;long long l = 3000000000000;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp; __int64 begin = GetCycleCount();&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;for(long long i = 1000000000; i &amp;gt; 0; i--)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;// Empty the cache in CPU.&lt;BR&gt;&amp;nbsp;&amp;nbsp;l--;&lt;BR&gt;&amp;nbsp;&amp;nbsp;// Access the memory as the address can not be divided by 4&lt;BR&gt;&amp;nbsp;&amp;nbsp;__asm&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov ecx,dword ptr [l+1]&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp; __int64 end = GetCycleCount();&lt;BR&gt;&amp;nbsp;printf("The elapse time is:%I64d\n", end - begin);&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;BR&gt;比较测试用例１与测试用例２打印出来的时间，你就可以从直观上得到访问奇地址时效率上的损失．&lt;BR&gt;所以我的结论是：&lt;BR&gt;在使用字节对齐时，请仔细考虑你要的是效率还是要的是内存，并在写程序时注意。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/33555.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>遇君阁</dc:creator><title>Effective C++ 目录重新划分</title><link>http://blog.vckbase.com/eyesonyhm/archive/2008/04/25/33402.html</link><pubDate>Fri, 25 Apr 2008 06:24:00 GMT</pubDate><guid>http://blog.vckbase.com/eyesonyhm/archive/2008/04/25/33402.html</guid><wfw:comment>http://blog.vckbase.com/eyesonyhm/comments/33402.html</wfw:comment><comments>http://blog.vckbase.com/eyesonyhm/archive/2008/04/25/33402.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/eyesonyhm/comments/commentRss/33402.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/eyesonyhm/services/trackbacks/33402.html</trackback:ping><description>&lt;P&gt;详细设计时应该注意的Item：&lt;BR&gt;条款03：尽可能使用const&lt;BR&gt;Use const whenever possible.&lt;BR&gt;条款18：让接口容易被正确使用，不易被误用&lt;BR&gt;Make interfaces easy to use correctly and hard to use incorrectly.&lt;BR&gt;条款19：设计class犹如设计type&lt;BR&gt;Treat class design as type design.&lt;BR&gt;条款20：宁以pass-by-reference-to-const替换pass-by-value&lt;BR&gt;Prefer pass-by-reference-to-const to pass-by-value.&lt;BR&gt;条款21：必须返回对象时，别妄想返回其reference&lt;BR&gt;Don't try to return a reference when you must return an object.&lt;BR&gt;条款22：将成员变量声明为private&lt;BR&gt;Declare data members private.&lt;BR&gt;条款23：宁以non-member、non-friend替换member函数&lt;BR&gt;Prefer non-member non-friend functions to member functions.&lt;BR&gt;条款24：若所有参数皆需类型转换，请为此采用non-member函数&lt;BR&gt;Declare non-member functions when type conversions should apply to all parameters.&lt;BR&gt;条款28：避免返回handles指向对象内部成分&lt;BR&gt;Avoid returning "handles" to object internals.&lt;BR&gt;条款32：确定你的public继承塑模出is-a关系&lt;BR&gt;Make sure public inheritance models "is-a."&lt;BR&gt;条款34：区分接口继承和实现继承&lt;BR&gt;Differentiate between inheritance of interface and inheritance of implementation.&lt;BR&gt;条款35：考虑virtual函数以外的其他选择&lt;BR&gt;Consider alternatives to virtual functions.&lt;BR&gt;条款36：绝不重新定义继承而来的non-virtual函数&lt;BR&gt;Never redefine an inherited non-virtual function.&lt;BR&gt;条款37：绝不重新定义继承而来的缺省参数值&lt;BR&gt;Never redefine a function's inherited default parameter value.&lt;BR&gt;条款38：通过复合塑模出has-a或"根据某物实现出"&lt;BR&gt;Model "has-a" or "is-implemented-in-terms-of" through composition.&lt;BR&gt;条款39：明智而审慎地使用private继承&lt;BR&gt;Use private inheritance judiciously.&lt;BR&gt;条款40：明智而审慎地使用多重继承&lt;BR&gt;Use multiple inheritance judiciously.&lt;/P&gt;
&lt;P&gt;写代码时应该注意的Item：&lt;BR&gt;条款02：尽量以const, enum, inline替换 #define&lt;BR&gt;Prefer consts,enums, and inlines to #defines.&lt;BR&gt;条款04：确定对象被使用前已先被初始化&lt;BR&gt;Make sure that objects are initialized before they're used.&lt;BR&gt;条款05：了解C++ 默默编写并调用哪些函数&lt;BR&gt;Know what functions C++ silently writes and calls.&lt;BR&gt;条款06：若不想使用编译器自动生成的函数，就该明确拒绝&lt;BR&gt;Explicitly disallow the use of compiler-generated functions you do not want.&lt;BR&gt;条款07：为多态基类声明virtual析构函数&lt;BR&gt;Declare destructors virtual in polymorphic base classes.&lt;BR&gt;条款09：绝不在构造和析构过程中调用virtual函数&lt;BR&gt;Never call virtual functions during construction or destruction.&lt;BR&gt;条款10：令operator= 返回一个reference to *this&lt;BR&gt;Have assignment operators return a reference to *this.&lt;BR&gt;条款11：在operator= 中处理&amp;#8220;自我赋值&amp;#8221;&lt;BR&gt;Handle assignment to self in operator=.&lt;BR&gt;条款12：复制对象时勿忘其每一个成分&lt;BR&gt;Copy all parts of an object.&lt;BR&gt;条款25：考虑写出一个不抛异常的swap函数&lt;BR&gt;Consider support for a non-throwing swap.&lt;BR&gt;条款26：尽可能延后变量定义式的出现时间&lt;BR&gt;Postpone variable definitions as long as possible.&lt;BR&gt;条款27：尽量少做转型动作&lt;BR&gt;Minimize casting.&lt;BR&gt;条款30：透彻了解inlining的里里外外&lt;BR&gt;Understand the ins and outs of inlining.&lt;BR&gt;条款31：将文件间的编译依存关系降至最低&lt;BR&gt;Minimize compilation dependencies between files.&lt;BR&gt;条款33：避免遮掩继承而来的名称&lt;BR&gt;Avoid hiding inherited names.&lt;/P&gt;
&lt;P&gt;异常应该注意的Item：&lt;BR&gt;条款08：别让异常逃离析构函数&lt;BR&gt;Prevent exceptions from leaving destructors.&lt;BR&gt;条款29：为&amp;#8220;异常安全&amp;#8221;而努力是值得的&lt;BR&gt;Strive for exception-safe code.&lt;/P&gt;
&lt;P&gt;资源管理&lt;BR&gt;条款13：以对象管理资源&lt;BR&gt;Use objects to manage resources.&lt;BR&gt;条款14：在资源管理类中小心coping行为&lt;BR&gt;Think carefully about copying behavior in resource-managing classes.&lt;BR&gt;条款15：在资源管理类中提供对原始资源的访问&lt;BR&gt;Provide access to raw resources in resource-managing classes.&lt;BR&gt;条款16：成对使用new和delete时要采取相同形式&lt;BR&gt;Use the same form in corresponding uses of new and delete.&lt;BR&gt;条款17：以独立语句将newed对象置入智能指针&lt;BR&gt;Store newed objects in smart pointers in standalone statements.&lt;BR&gt;条款49：了解new-handler的行为&lt;BR&gt;Understand the behavior of the new-handler.&lt;BR&gt;条款50：了解new和delete的合理替换时机&lt;BR&gt;Understand when it makes sense to replace new and delete.&lt;BR&gt;条款51：编写new和delete时需固守常规&lt;BR&gt;Adhere to convention when writing new and delete.&lt;BR&gt;条款52：写了placement new也要写placement delete&lt;BR&gt;Write placement delete if you write placement new.&lt;/P&gt;
&lt;P&gt;模板与泛型编程&lt;BR&gt;条款41：了解隐式接口和编译期多态&lt;BR&gt;Understand implicit interfaces and compile-time polymorphism.&lt;BR&gt;条款42：了解typename的双重意义&lt;BR&gt;Understand the two meanings of typename.&lt;BR&gt;条款43：学习处理模板化基类内的名称&lt;BR&gt;Know how to access names in templatized base classes.&lt;BR&gt;条款44：将与参数无关的代码抽离templates&lt;BR&gt;Factor parameter-independent code out of templates.&lt;BR&gt;条款45：运用成员函数模板接受所有兼容类型&lt;BR&gt;Use member function templates to accept "all compatible types."&lt;BR&gt;条款46：需要类型转换时请为模板定义非成员函数&lt;BR&gt;Define non-member functions inside templates when type conversions are desired.&lt;BR&gt;条款47：请使用traits classes表现类型信息&lt;BR&gt;Use traits classes for information about types.&lt;BR&gt;条款48：认识template元编程&lt;BR&gt;Be aware of template metaprogramming.&lt;/P&gt;
&lt;P&gt;杂项&lt;BR&gt;条款01：视C++ 为一个语言联邦&lt;BR&gt;View C++ as a federation of languages&lt;BR&gt;条款53：不要轻忽编译器的警告&lt;BR&gt;Pay attention to compiler warnings.&lt;BR&gt;条款54：让自己熟悉包括TR1在内的标准程序库&lt;BR&gt;Familiarize yourself with the standard library, including TR1.&lt;BR&gt;条款55：让自己熟悉Boost&lt;BR&gt;Familiarize yourself with Boost.&lt;/P&gt;
&lt;P&gt;我个人感觉原来的目录容易理解，却不容易记忆。因为很大一部分的人看过Effective C++或者都还没有全部看完这本书，可他们都感觉虽然暂时理解了但没有办法一下把书里面所有的知识都应用于实践，所以我觉得如果是这样还不如在看过书以后对其进行纯记忆，以后再慢慢理解融会贯通进行使用，这样的效果更加明显。这也是我为什么重新划分原书目录的原因--暂时的理解不如先记忆后理解,希望对大家有用.&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/eyesonyhm/aggbug/33402.html" width = "1" height = "1" /&gt;</description></item></channel></rss>