﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><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>博客园-侧身而过 吴尔平's Blog </title><link>http://www.cnblogs.com/WuErPIng/</link><description>The man who can think and does not know how to express what he thinks is at the level of him who cannot think。</description><language>zh-cn</language><lastBuildDate>Tue, 09 Feb 2010 23:35:45 GMT</lastBuildDate><pubDate>Tue, 09 Feb 2010 23:35:45 GMT</pubDate><ttl>60</ttl><item><title>gtest  的彩色信息输出 + boost.test 的内存泄漏检测及定位</title><link>http://www.cnblogs.com/WuErPIng/archive/2009/06/09/1499283.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Tue, 09 Jun 2009 00:44:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2009/06/09/1499283.html</guid><description><![CDATA[<p>阅读: 1502 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2009-06-09 08:44 <a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/09/1499283.html" target="_blank">原文链接</a></p><p><strong>gtest&nbsp; 的彩色信息输出 +&nbsp;boost.test 的内存泄漏检测及定位</strong>&nbsp;<br /> <br /><span style="color: #888888"><strong>/*</strong> </span><span style="color: #888888"><em>Author</em>&nbsp;<em>: Andrew.Wu</em><strong>&nbsp;&nbsp;&nbsp; </strong>[ </span><span style="color: #888888"><em>Created on&nbsp;: 2009/04/29 - </em></span><span style="color: #888888"><em>Last Modified On&nbsp;&nbsp;: 2009/05/02</em> ]</span><span style="color: #888888">&nbsp;</span><br /><span style="color: #888888"><strong>*/</strong></span> <br />&nbsp; <br /><span style="color: #888888"><span style="color: #000000">gtest 的彩色信息显示看起来比较醒目，boost。test 的内存泄漏检查很实用。真希望两个功能在一个库里，可以省不少事情。不过如果想在作者们没有这么做之前结合使用这两个功能，下面的方法可以试。<br /><br /></span></span><span style="color: #888888">&nbsp;<br /><span style="color: #cccccc">1: </span>#include <span style="font-size: xx-small; color: #0000ff">&lt;</span>iostream<span style="font-size: xx-small; color: #0000ff">&gt;</span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">2: </span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">3: </span>#include <span style="font-size: xx-small; color: #0000ff">&lt;</span>gtest<span style="font-size: xx-small; color: #0000ff">/</span>gtest<span style="font-size: xx-small; color: #0000ff"><strong>.</strong></span>h<span style="font-size: xx-small; color: #0000ff">&gt;</span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">4: </span>#pragma comment<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span>lib<span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> <span style="color: #800080">"gtestd_d.lib"</span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">5: </span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">6: </span>#include <span style="font-size: xx-small; color: #0000ff">&lt;</span>boost<span style="font-size: xx-small; color: #0000ff">/</span>test<span style="font-size: xx-small; color: #0000ff">/</span>unit_test<span style="font-size: xx-small; color: #0000ff"><strong>.</strong></span>hpp<span style="font-size: xx-small; color: #0000ff">&gt;</span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">7: </span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">8: </span>TEST<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span>FooTest<span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> test<span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">9: </span><span style="font-size: xx-small; color: #0000ff"><strong>{</strong></span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">10: </span><span style="color: #ff0000"><strong>char</strong></span> <span style="font-size: xx-small; color: #0000ff">*</span>t <span style="font-size: xx-small; color: #0000ff">=</span> <span style="color: #ff0000"><strong>new</strong></span> <span style="color: #ff0000"><strong>char</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>[</strong></span><span style="color: #a52a2a">2</span><span style="font-size: xx-small; color: #0000ff"><strong>]</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">11: </span>EXPECT_EQ<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="color: #a52a2a">3</span><span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> <span style="color: #a52a2a">3</span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">12: </span>EXPECT_EQ<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="color: #a52a2a">2</span><span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> <span style="color: #a52a2a">3</span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">13: </span><span style="font-size: xx-small; color: #0000ff"><strong>}</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">14: </span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">15: </span>using boost<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>unit_test<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>test_case<span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">16: </span><span style="color: #ff0000"><strong>void</strong></span> testf<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">17: </span><span style="font-size: xx-small; color: #0000ff"><strong>{</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">18: </span><span style="color: #ff0000"><strong>char</strong></span> <span style="font-size: xx-small; color: #0000ff">*</span>t <span style="font-size: xx-small; color: #0000ff">=</span> <span style="color: #ff0000"><strong>new</strong></span> <span style="color: #ff0000"><strong>char</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>[</strong></span><span style="color: #a52a2a">2</span><span style="font-size: xx-small; color: #0000ff"><strong>]</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">19: </span>BOOST_CHECK<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="color: #a52a2a">3</span> <span style="font-size: xx-small; color: #0000ff">=</span><span style="font-size: xx-small; color: #0000ff">=</span> <span style="color: #a52a2a">3</span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">20: </span>BOOST_CHECK<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="color: #a52a2a">2</span> <span style="font-size: xx-small; color: #0000ff">=</span><span style="font-size: xx-small; color: #0000ff">=</span> <span style="color: #a52a2a">3</span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">21: </span><span style="font-size: xx-small; color: #0000ff"><strong>}</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">22: </span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">23: </span>using boost<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>unit_test<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>test_suite<span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">24: </span>test_suite<span style="font-size: xx-small; color: #0000ff">*</span> init_unit_test_suite<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span> <span style="color: #ff0000"><strong>int</strong></span> argc<span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> <span style="color: #ff0000"><strong>char</strong></span><span style="font-size: xx-small; color: #0000ff">*</span> argv<span style="font-size: xx-small; color: #0000ff"><strong>[</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>]</strong></span> <span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">25: </span><span style="font-size: xx-small; color: #0000ff"><strong>{</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">26: </span>std<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>cout <span style="font-size: xx-small; color: #0000ff">&lt;</span><span style="font-size: xx-small; color: #0000ff">&lt;</span> <span style="color: #800080">" gtest...\n"</span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">27: </span><span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>testing<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>InitGoogleTest<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="font-size: xx-small; color: #0000ff">&amp;</span>argc<span style="font-size: xx-small; color: #0000ff"><strong>,</strong></span> argv<span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">28: </span><span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>testing<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>UnitTest<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>GetInstance<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff">-</span><span style="font-size: xx-small; color: #0000ff">&gt;</span>Run<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">29: </span><br /><span style="color: #cccccc; font-style: normal; background-color: #ffffff">30: </span>std<span style="font-size: xx-small; color: #0000ff">:</span><span style="font-size: xx-small; color: #0000ff">:</span>cout <span style="font-size: xx-small; color: #0000ff">&lt;</span><span style="font-size: xx-small; color: #0000ff">&lt;</span> <span style="color: #800080">"\n\n boost.test...\n"</span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span> <br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">31: </span>test_suite<span style="font-size: xx-small; color: #0000ff">*</span> ts <span style="font-size: xx-small; color: #0000ff">=</span> BOOST_TEST_SUITE<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span> <span style="color: #800080">""</span> <span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">32: </span>ts<span style="font-size: xx-small; color: #0000ff">-</span><span style="font-size: xx-small; color: #0000ff">&gt;</span>add<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span> BOOST_TEST_CASE<span style="font-size: xx-small; color: #0000ff"><strong>(</strong></span> <span style="font-size: xx-small; color: #0000ff">&amp;</span>testf <span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span> <span style="font-size: xx-small; color: #0000ff"><strong>)</strong></span><span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">33: </span><span style="color: #ff0000"><strong>return</strong></span> ts<span style="font-size: xx-small; color: #0000ff"><strong>;</strong></span><br /><span style="color: #eeeeee; font-style: normal; background-color: #ffffff">34: </span><span style="font-size: xx-small; color: #0000ff"><strong>}</strong></span><br /></span><br />&nbsp; <br /><span style="color: #888888">（具体使用 test case 时只用 gtest 的即可，里面两者都写仅仅是为了有个对比）</span> <br />&nbsp; <br /><span style="color: #888888">gtest 1.3.0</span> <br /><span style="color: #888888"><a href="http://code.google.com/p/googletest/">http://code.google.com/p/googletest/</a></span> <br /><span style="color: #888888">booost 1.8.0</span> <br /><span style="color: #888888"><a href="http://www.boost.org/">http://www.boost.org/</a></span> <br />&nbsp; <br /><span style="color: #888888">output：</span>&nbsp; <br /><span style="color: #888888"><img height="542" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/WuErPing/EntryImages/20090429/gtest_boost_unit_test.gif" width="641" /></span> <br />&nbsp; <br />&nbsp; <br /><strong>windows mfc 程序定位实例 ：</strong> <br /><strong><em>场景1：<br /></em></strong><br /><span style="color: #888888">Detected memory leaks!<br />Dumping objects -&gt;<br />f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {1081} normal block<br />&nbsp;at 0x0038F448, 30 bytes long.<br />&nbsp;Data: &lt;&nbsp;&nbsp; x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; 0C 00 E5 78 06 00 00 00 06 00 00 00 01 00 00 00<br />f:\dd\vctools\vc7libs\ship\<strong>atlmfc\src\mfc\inet.cpp</strong>(<strong><span style="color: #ff0000">509</span></strong>) : {<strong><span style="color: #ff0000">1080</span></strong>} client block at<br />&nbsp;0x01268148, subtype c0, 28 bytes long.<br />a <strong>CHttpConnection object</strong> at $01268148, 28 bytes long<br />Object dump complete.</span> <br />&nbsp; <br />-- <br /><span style="color: #888888"><strong>inet.cpp</strong>(<span style="color: #ff0000"><strong>509</strong></span>) : {<span style="color: #ff0000"><strong>1080</strong></span>}</span> <br /><span style="color: #999999"><span style="color: #888888">inet.cpp 的第 509 行分配的内存</span></span> <br /><span style="color: #999999"><span style="color: #888888">specified object allocation order number 1080</span></span> <br /><span style="color: #888888">--</span> <br />&nbsp; <br />找到本机对应的文件 <br />C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc\inet.cpp <br />&nbsp; <br />找到相应的行 <br />CHttpConnection* CInternetSession::GetHttpConnection(LPCTSTR pstrServer,<br />&nbsp;INTERNET_PORT nPort <span style="color: #339966">/* = INTERNET_INVALID_PORT_NUMBER */</span>,<br />&nbsp;LPCTSTR pstrUserName <span style="color: #339966">/* = NULL */</span>, LPCTSTR pstrPassword <span style="color: #339966">/* = NULL */)</span><br />{<br />&nbsp;<span style="color: #993300">ASSERT</span>(AfxIsValidString(pstrServer));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #339966">// line 509</span><br />&nbsp;CHttpConnection* pResult = <strong><span style="color: #ff0000">new</span> </strong>CHttpConnection(this,<br />&nbsp;&nbsp;pstrServer, nPort, pstrUserName, pstrPassword, m_dwContext);<br />&nbsp;<span style="color: #0000ff">return</span> pResult;<br />} <br />&nbsp; <br />如此应该是有这个函数的调用者没有清理返回的 CHttpConnection*，搜索调用代码发现果然如此 <br />&nbsp; <br /><strong><em>场景2：</em></strong> <br />内存泄漏检测信息中没有文件名及行号<br /><span style="color: #999999">Detected memory leaks!<br />Dumping objects -&gt;<br />{<strong><span style="color: #ff0000">1080</span></strong>} normal block at 0x00C28148, 1 bytes long.<br />&nbsp;Data: &lt; &gt; CD<br />Object dump complete.</span> <br />&nbsp; <br />&nbsp; <br /><span style="color: #000000">在程序的开始加入 _CrtSetBreakAlloc(<span style="color: #ff0000">1080</span>); </span><br /><span style="color: #888888">--</span> <br /><br />&nbsp; <br /><span style="color: #000000">Start debugging </span><br /><span style="color: #000000">在此内存分配的位置（但不精确）会停下来提示</span> <br /><span style="color: #000000"><br /><span style="color: #ff0000">xxx.exe has triggered a breakpoint</span></span> <br /><br />当然，还是有文件名与行号省事，试试在文件适当位置加入 <br />&nbsp; <br /><span style="color: #0000ff">#ifdef</span> _DEBUG<br /><span style="color: #0000ff">#define new</span> DEBUG_NEW<br /><span style="color: #0000ff">#endif<br /></span><span style="color: #339966">//#define DEBUG_NEW new(THIS_FILE, __LINE__)</span> <br />&nbsp; <br />如此就可以象上面一样看到文件名及行号 <br />&nbsp; <br /><span style="color: #999999">Detected memory leaks!<br />Dumping objects -&gt;<br />d:\work\xxx\xxx.cpp(167)<br />&nbsp;: {1080} normal block at 0x00C28148, 1 bytes long.<br />&nbsp;Data: &lt; &gt; CD<br />Object dump complete.</span> <br />&nbsp; <br />&nbsp; <br />&nbsp; <br /><span style="color: #888888">Sets a breakpoint on a specified object allocation order number (debug version only).</span> <br /><span style="color: #888888">--</span></p> <img src="http://www.cnblogs.com/WuErPIng/aggbug/1499283.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/09/1499283.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/09/1499283.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>在低版本的 vc 中使用 vc 10.0 的新特性</title><link>http://www.cnblogs.com/WuErPIng/archive/2009/06/08/1498392.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Mon, 08 Jun 2009 00:41:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2009/06/08/1498392.html</guid><description><![CDATA[<p>阅读: 2817 评论: 3 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2009-06-08 08:41 <a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/08/1498392.html" target="_blank">原文链接</a></p><p>&nbsp;</p><pre><span style="color: #008000">/*!
在低版本的 vc 中使用 vc 10.0 的新特性
created by : andrew.wu (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#112;&#105;&#110;&#103;&#119;&#117;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">erpingwu@gmail.com</a>)<br /><a title="http://blog.oolanguage.com/erpingwu/在低版本-vs-ide-使用-vc-100-的新特性/" href="http://blog.oolanguage.com/erpingwu/在低版本-vs-ide-使用-vc-100-的新特性/">http://blog.oolanguage.com/erpingwu/在低版本-vs-ide-使用-vc-100-的新特性/</a><br /><br /></span><span style="color: #008000"><br /><br /><br /><br /><br />*/</span></pre>
<p><br /><br />vc 10.0 提供了一些新的特性,最引人注目的莫过于 lambda, 但 vs2010 beta 内存占用之多也不得不让人心生退让. <br />高手 7cat 指出 "vc ide 只是一个壳" <br />那么如果利用 vc 10.0 编译器的新功能? <br />以vc9为例, 注意 Tools-&gt;Projects and Solutions-&gt;VC++ Directories-&gt;Executable files-&gt;$(VCInstallDir)bin, 这个说明了IDE所用的cl.exe, link.exe等工具的所在.在此目录前新增一个 $(VCInstallDir)bin_vc10.0, 将所需要的 vc10.0 的文件 copy 过去. <br /><br />c1.dll <br />c1xx.dll <br />c2.dll <br />cl.exe <br />cl.exe.config <br />link.exe <br />link.exe.config <br />msobj100.dll <br />mspdb100.dll <br />mspdbcore.dll <br />mspdbsrv.exe <br />msvcm100.dll <br />msvcp100.dll <br />msvcr100.dll <br /><br />然后找个例子试试,你就发现 c++ 0x 的 lambda 已经能为你所用了, 这时发布程序所用的 dll 还是 vc9 的.</p><pre>#include "<span style="color: #8b0000">stdafx.h</span>"
#include &lt;iostream&gt;
#include &lt;<span style="color: #0000ff">string</span>&gt;
<span style="color: #0000ff">using</span> <span style="color: #0000ff">namespace</span> std;
<span style="color: #0000ff">int</span> _tmain(<span style="color: #0000ff">int</span> argc, _TCHAR* argv[])
{
 [](<span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span>&amp; str){
  cout &lt;&lt; str &lt;&lt; endl;
 }("<span style="color: #8b0000">Hello vc 10.0</span>");
}</pre>
<p><br /><br />MS对 vc10 的说法是 &#8220;10 Is the New 6&#8221;，这一点只在一个地方有体现，不是速度，不是 IDE 内存占用，它表现在程序最终发布上。阿门， vc 10.0 再次可以通过 xcopy 发布，而不用辛苦的对 manifest 做各种 hack 式的处理。 <br />不过，即使是用了 vc 10.0 的 link.exe ，还是不能摆脱 vc9 的困境。这时有一个更夸张一点的做法：不仅仅使用 vc 10.0 的编译与连接工具，还使用它的库。 <br />只需在 Tools-&gt;Projects and Solutions-&gt;VC++ Directories-&gt;Include files 和 Library files 增加 vc 10.0 对应的目录(注意需要在 vc9 原来目录之前) <br />重建项目后你会发现你可以将程序与所需要的 vc 10.0 的&nbsp;dll 直接 copy 到没有 vc 10.0 运行库的机器使用了 <br />以上步骤也在 vc 7.1 中测试通过</p><img src="http://www.cnblogs.com/WuErPIng/aggbug/1498392.html?type=1" width="1" height="1" alt=""/><p>评论: 3　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/08/1498392.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/06/08/1498392.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>使用另一个blog: http://blog.csdn.net/WuErPing</title><link>http://www.cnblogs.com/WuErPIng/archive/2009/02/15/1390918.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sun, 15 Feb 2009 05:42:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2009/02/15/1390918.html</guid><description><![CDATA[<p>阅读: 147 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2009-02-15 13:42 <a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/15/1390918.html" target="_blank">原文链接</a></p><font face="Verdana">使用另一个blog: http://blog.csdn.net/WuErPing</font>
<img src="http://www.cnblogs.com/WuErPIng/aggbug/1390918.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/15/1390918.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/15/1390918.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>scons + swig  </title><link>http://www.cnblogs.com/WuErPIng/archive/2009/02/10/1387515.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Tue, 10 Feb 2009 07:47:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2009/02/10/1387515.html</guid><description><![CDATA[<p>阅读: 302 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2009-02-10 15:47 <a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/10/1387515.html" target="_blank">原文链接</a></p><p><strong><span style="font-size: medium">scons + swig&nbsp;</span></strong><strong>&nbsp;&nbsp;&nbsp; </strong></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （ </strong><em>WuErPing </em>&nbsp;2009/02/10 <strong>）</strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong>scons是个好东西，swig也是个好东西，两个好东西加起来如何 ?</strong></p>
<p>&nbsp;<strong>本文所用开发环境：</strong><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>swigwin-1.3.38 <a href="http://www.swig.org./">http://www.swig.org./</a><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>SCons 1.2.0.d20090113 <a href="http://www.scons.org/">http://www.scons.org/</a><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>python 2.6.1 <a href="http://www.python.org/">http://www.python.org/</a><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>lua 5.1.4 <a href="http://www.lua.org/">http://www.lua.org/</a><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>vc2008+sp1</p>
<p>&nbsp;<strong>操作步骤：</strong><br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>1、确认自己已经设置好相应的path<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>2、Visual Studio 2008 Command Prompt<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>3、scons.py<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>4、runme.py/runme.lua</p>
<p><strong>SConstruct：</strong></p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swig&nbsp;生成&nbsp;python&nbsp;扩展&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;已测试</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swigwin-1.3.38\Examples\python\simple</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swigwin-1.3.38\Examples\python\std_map</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swigwin-1.3.38\Examples\python\std_vector</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swigwin-1.3.38\Examples\python\callback</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;os,shutil<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">env&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Environment()<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">env.Append(ENV&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;os.environ)<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">env.AppendUnique(CXXFLAGS</span><span style="color: #000000">=</span><span style="color: #000000">Split(</span><span style="color: #800000">"</span><span style="color: #800000">/EHsc&nbsp;/MD</span><span style="color: #800000">"</span><span style="color: #000000">))&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">env.Append(CPPPATH&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[r</span><span style="color: #800000">'</span><span style="color: #800000">C:\Script\Python26\include</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">env.Append(LIBPATH&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[r</span><span style="color: #800000">'</span><span style="color: #800000">C:\Script\Python26\libs</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">env.AppendUnique(SWIGFLAGS&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #800000">'</span><span style="color: #800000">-c++</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">-python</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">env.AppendUnique(SWIGFLAGS&nbsp;=&nbsp;['-python'])</span><span style="color: #008000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">env.AppendUnique(SHLIBSUFFIX&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #800000">''</span><span style="color: #000000">])<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;env.SharedLibrary(</span><span style="color: #800000">'</span><span style="color: #800000">_example.dll</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;[</span><span style="color: #800000">'</span><span style="color: #800000">example.i</span><span style="color: #800000">'</span><span style="color: #000000">])&nbsp;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;DllToPyd(</span><span style="color: #000000">**</span><span style="color: #000000">v):<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dll&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str(v[</span><span style="color: #800000">"</span><span style="color: #800000">target</span><span style="color: #800000">"</span><span style="color: #000000">][0]);<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;pyd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dll.replace(</span><span style="color: #800000">"</span><span style="color: #800000">.dll</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">.pyd</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;shutil.move(dll,&nbsp;pyd)<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">env.AddPostAction(s,&nbsp;env.Action(DllToPyd))<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">28</span>&nbsp;</div>
<p>&nbsp;&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swig&nbsp;生成&nbsp;lua&nbsp;扩展&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;已测试</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">&nbsp;swigwin-1.3.38\Examples\lua\class</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;os,shutil<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">env&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Environment()<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">env.Append(ENV&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;os.environ)<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">env.AppendUnique(CXXFLAGS</span><span style="color: #000000">=</span><span style="color: #000000">Split(</span><span style="color: #800000">"</span><span style="color: #800000">/EHsc&nbsp;/MT</span><span style="color: #800000">"</span><span style="color: #000000">))&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">env.Append(CPPPATH&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[r</span><span style="color: #800000">'</span><span style="color: #800000">C:\Script\Lua\5.1\include</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">env.Append(LIBPATH&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[r</span><span style="color: #800000">'</span><span style="color: #800000">C:\Script\Lua\5.1\lib</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">env.Append(LIBS&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #800000">"</span><span style="color: #800000">lua51.lib</span><span style="color: #800000">"</span><span style="color: #000000">]);<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">env.AppendUnique(SWIGFLAGS&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #800000">'</span><span style="color: #800000">-c++</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">-lua</span><span style="color: #800000">'</span><span style="color: #000000">])<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #008000">#</span><span style="color: #008000">env.AppendUnique(SWIGFLAGS&nbsp;=&nbsp;['-lua'])</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">env.AppendUnique(SHLIBSUFFIX&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #800000">''</span><span style="color: #000000">])<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;env.SharedLibrary(</span><span style="color: #800000">'</span><span style="color: #800000">example.dll</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;[</span><span style="color: #800000">'</span><span style="color: #800000">example.cxx</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">'</span><span style="color: #800000">example.i</span><span style="color: #800000">'</span><span style="color: #000000">])&nbsp;<br />
</span><span style="color: #008080">18</span>&nbsp;</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src="http://www.cnblogs.com/WuErPIng/aggbug/1387515.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/10/1387515.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2009/02/10/1387515.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>如何在 vista 使用 Device Emulator 连接internet</title><link>http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128531.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sat, 29 Mar 2008 02:27:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128531.html</guid><description><![CDATA[<p>阅读: 569 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2008-03-29 10:27 <a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128531.html" target="_blank">原文链接</a></p><p>首先 vista 下没有&nbsp;<strong>ActiveSync</strong> ，我们需要下载其替代品 <strong>Windows Mobile Device Center</strong>.<br />
简单安装后，注意下图的各项<br />
</p>
<p>&nbsp;</p>
<p><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/wuerping/mobile.png" border="0" /><br />
<br />
&nbsp;选择 <strong>DMA&nbsp;</strong>&nbsp;(应该是 Digital Media Adapter 而不是我们熟悉的 direct memory access )<br />
&nbsp;选择 <strong>The Internet<br />
</strong><br />
&nbsp;然后在 vs 里打开 Device Emulator Manager (Tools-&gt;Device Emulator Manager).<br />
&nbsp;选择一个模拟器，右键菜单里 connect 然后 cradle</p>
<p>&nbsp;<br />
</p>
<img src="http://www.cnblogs.com/WuErPIng/aggbug/1128531.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128531.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128531.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>vc9 Feature Pack Beta tr1 的一些问题</title><link>http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128502.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sat, 29 Mar 2008 01:52:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128502.html</guid><description><![CDATA[<p>阅读: 1079 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2008-03-29 09:52 <a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128502.html" target="_blank">原文链接</a></p><p><font face="Verdana">&nbsp;最近使用了&nbsp; vc9 Feature Pack 里 tr1 一些库，但结果却让我比较失望．<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;<strong>一、头文件包含的问题</strong><br />
&nbsp;&nbsp;如果你建一个简单的console项目，如下包含<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">random</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">regex</span><span style="color: #000000">&gt;</span></div>
<p>&nbsp;&nbsp;你不会有任何问题，但当你的包含了windows.h时，就会看到output窗口里是无尽的错误与警告。<br />
<span style="color: #ff0000">&nbsp;&nbsp;&gt;c:\program files\microsoft visual studio 9.0\vc\include\regex(4170) : error C2589: '(' : illegal token on right side of '::'<br />
&nbsp;&nbsp;&gt;c:\program files\microsoft visual studio 9.0\vc\include\random(51) : warning C4003: not enough actual parameters for macro 'max'<br />
&nbsp;&nbsp;&gt;c:\program files\microsoft visual studio 9.0\vc\include\random(459) : warning C4003: not enough actual parameters for macro 'min'<br />
&nbsp;&nbsp;&gt;c:\program files\microsoft visual studio 9.0\vc\include\random(412) : error C2059: syntax error : '&lt;L_TYPE_raw&gt;'</span><br />
&nbsp;&nbsp;......<br />
&nbsp;&nbsp;而你直接使用boost的库时，不会有此问题.<br />
&nbsp;&nbsp;这个问题是因 tr1 的 max、min 与 windows.h 里的冲突导致，还好有解决方案，虽然丑陋了些　</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">#pragma</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;push_macro("min")&nbsp;&nbsp;&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">#pragma</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;push_macro("max")&nbsp;&nbsp;&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">#undef</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;min&nbsp;&nbsp;&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">#undef</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;max&nbsp;&nbsp;&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">random</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">regex</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">#pragma</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;pop_macro("min")&nbsp;&nbsp;&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">#pragma</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;pop_macro("max")</span></div>
<p><strong>&nbsp;二、regex <span style="color: #ff0000">memory leak</span></strong><br />
&nbsp;&nbsp;前面的问题还不让人感觉太难受，这一个问题就让人非常恼火了。<br />
&nbsp;&nbsp;下面简单到不能再简单的例子就能重现这个问题&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;_CRTDBG_MAP_ALLOC</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">crtdbg.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">regex</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_tmain(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;{<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std::tr1;<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;std::tr1::regex&nbsp;rgx(</span><span style="color: #800000">"</span><span style="color: #800000">&lt;node&nbsp;v='(\\w+)'&nbsp;n='(\\w+)'&nbsp;/&gt;</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;_CrtDumpMemoryLeaks();<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;}</span></div>
<p>&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;debug一下，下面结果是不是让你大惊失色<br />
&nbsp;&nbsp;......<br />
&nbsp;<span style="color: red">&nbsp;c:\program files\microsoft visual studio 9.0\vc\include\regex(1126) : {181} normal block at 0x0079A990, 16 bytes long.<br />
&nbsp;&nbsp; Data: &lt;&lt;node v='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; 3C 6E 6F 64 65 20 76 3D 27 CD CD CD CD CD CD CD <br />
&nbsp;&nbsp;&nbsp;{180} normal block at 0x0079A930, 32 bytes long.<br />
&nbsp;&nbsp; Data: &lt;8&lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y &gt; 38 3C 84 00 06 00 00 00 00 00 00 00 E0 A9 79 00&nbsp;</span><br />
&nbsp;&nbsp;......<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;这个问题实在没兴趣去解决了，在ms没有新补丁出来前用boost::regex或是greta吧。<br />
<br />
&nbsp;<em>&nbsp;btw:<br />
&nbsp;&nbsp;在 Visual C++ Team Blog -&gt; Q&amp;A on our TR1 implementation<br />
&nbsp;&nbsp;</em><a href="http://blogs.msdn.com/vcblog/archive/2008/01/08/q-a-on-our-tr1-implementation.aspx"><em>（http://blogs.msdn.com/vcblog/archive/2008/01/08/q-a-on-our-tr1-implementation.aspx</em></a><em>）<br />
&nbsp;&nbsp;也有人发现了同样的问题，下面是一个答复:&nbsp;&nbsp;<br />
<span style="color: #008080">&nbsp;&nbsp;Thursday, January 24, 2008 7:30 PM by Stephan T. Lavavej [MSFT] <br />
&nbsp;&nbsp;# re: Q&amp;A on our TR1 implementation <br />
&nbsp;&nbsp;Confirmed! regex is leaking memory. I've identified the problem and I'll file a bug about it immediately.<br />
&nbsp;&nbsp;Stephan T. Lavavej<br />
&nbsp;&nbsp;Visual C++ Libraries Developer</span></em></font></p>
<p><font face="Verdana"></font>&nbsp;</p>
 <img src="http://www.cnblogs.com/WuErPIng/aggbug/1128502.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128502.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/29/1128502.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>NSIS Kill Process (转贴)</title><link>http://www.cnblogs.com/WuErPIng/archive/2008/03/12/1101793.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Wed, 12 Mar 2008 03:24:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2008/03/12/1101793.html</guid><description><![CDATA[<p>阅读: 567 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2008-03-12 11:24 <a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/12/1101793.html" target="_blank">原文链接</a></p><p><br />
<font face="Verdana"><a href="http://www.esanu.name/programs/NSISKillProcess.html">http://www.esanu.name/programs/NSISKillProcess.html</a></font></p>
<p>Plug-in help to terminate, close, quit and detect working any process from NSIS installer.</p>
<p>Notes for usage:</p>
<ol>
    <li>Download <a href="http://nsis.sourceforge.net/">NSIS Installer</a>
    <li>NSIS Installer
    <li>Download <a href="http://www.esanu.name/programs/processwork.rar">Kill Process for NSIS</a>
    <li>Unrar it and to NSIS instaled path, ussualy are C:\Program Files\NSIS\Plugins\
    <li>Make any script install.
    <li>Exported Function are: ExistsProcess, KillProcess, CloseProcess, QuitProcess
    <li>Use inside script: </li>
</ol>
<pre>Function CloseParentWithUserApproval
&nbsp;&nbsp;&nbsp;&nbsp;Push $5
&nbsp;&nbsp;&nbsp;&nbsp;loop:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push "msimn.exe"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processwork::existsprocess
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop $5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntCmp $5 0 done
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox MB_RETRYCANCEL|MB_ICONSTOP
<span style="color: #c0c0c0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Outlook Express must be closed during &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this installation.$\r$\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close Outlook Express now, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or press "Retry" to automatically close &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Outlook Express and continue or press &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Cancel" to cancel the &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installation entirely.'</span>  IDCANCEL BailOut
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push "msimn.exe"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processwork::KillProcess
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep 2000
&nbsp;&nbsp;&nbsp;&nbsp;Goto loop
BailOut:
Abort
done:
Pop $5
FunctionEnd
</pre>
<br />
If want more features or any bug, fill free to <a href="mailto:vitalie@[removeme]esanu.name">contact me</a>.<br />
<br />
Download <a href="http://www.esanu.name/programs/processwork.rar">Kill Process for NSIS</a>
<p class="keywords">Keywords related to this page:<br />
<code>kill processes, kill windows processes, nullsoft streaming video, nullsoft, nullsoft video, nsis, nullsoft installer, nullsoft winamp, nsis installer, close processes, closing processes, eclipse nsis, how to kill processes, kill all child processes</code></p>
<img src="http://www.cnblogs.com/WuErPIng/aggbug/1101793.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/12/1101793.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/12/1101793.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>C#与一个彩票页面</title><link>http://www.cnblogs.com/WuErPIng/archive/2008/03/08/1096909.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sat, 08 Mar 2008 15:10:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2008/03/08/1096909.html</guid><description><![CDATA[<p>阅读: 506 评论: 3 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2008-03-08 23:10 <a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/08/1096909.html" target="_blank">原文链接</a></p><p><font face="Verdana"><a href="http://www.zhcw.com/lottery/db_table_1_desc.htm">http://www.zhcw.com/lottery/db_table_1_desc.htm</a> 是中彩网的一个普通页面，不过这个页面要正确的下载并显示却很有点意思，下面是代码<br />
</font><font face="Verdana"></font></p>
<p><font face="Verdana">&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">HttpWebRequest&nbsp;request&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpWebRequest)WebRequest.Create(</span><span style="color: #800000">"</span><span style="color: #800000">http://www.zhcw.com/lottery/db_table_1_desc.htm</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
HttpWebResponse&nbsp;response&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpWebResponse)request.GetResponse();<br />
String&nbsp;characterSet&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.CharacterSet;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(characterSet&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ISO-8859-1</span><span style="color: #800000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;注意字符集</span><span style="color: #008000"><br />
</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;characterSet&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">gb2312</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
}<br />
Stream&nbsp;stream;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(response.ContentEncoding&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">gzip</span><span style="color: #800000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;注意内容编码</span><span style="color: #008000"><br />
</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GZipStream(response.GetResponseStream(),&nbsp;CompressionMode.Decompress);<br />
}<br />
</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;stream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.GetResponseStream();<br />
}<br />
</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(StreamReader&nbsp;reader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamReader(stream,&nbsp;Encoding.GetEncoding(characterSet)))<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(reader.ReadToEnd());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;OK了</span><span style="color: #008000"><br />
</span><span style="color: #000000">}<br />
response.Close();</span></div>
<p><br />
&nbsp;</p>
<p>&nbsp;</p>
</font>
 <img src="http://www.cnblogs.com/WuErPIng/aggbug/1096909.html?type=1" width="1" height="1" alt=""/><p>评论: 3　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/08/1096909.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2008/03/08/1096909.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>py2exe 转换 pytetris</title><link>http://www.cnblogs.com/WuErPIng/archive/2007/12/02/980272.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sun, 02 Dec 2007 14:21:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2007/12/02/980272.html</guid><description><![CDATA[<p>阅读: 1307 评论: 0 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2007-12-02 22:21 <a href="http://www.cnblogs.com/WuErPIng/archive/2007/12/02/980272.html" target="_blank">原文链接</a></p><font face="Courier New">首先，需要一个给 py2exe 使用的 python 脚本，我命名为 setup.py，内容如下:<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;distutils.core&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;setup<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;glob,&nbsp;shutil<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;py2exe<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />setup(windows</span><span style="color: #000000">=</span><span style="color: #000000">[</span><span style="color: #800000">"</span><span style="color: #800000">main.py</span><span style="color: #800000">"</span><span style="color: #000000">])<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />shutil.copytree(</span><span style="color: #800000">'</span><span style="color: #800000">SFX</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">dist/SFX</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />shutil.copytree(</span><span style="color: #800000">'</span><span style="color: #800000">Image</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">dist/Image</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />shutil.copyfile(</span><span style="color: #800000">'</span><span style="color: #800000">C:/Python25/Lib/site-packages/pygame/freesansbold.ttf</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">dist/freesansbold.ttf</span><span style="color: #800000">'</span><span style="color: #000000">)</span></div>
<br />
并对 main.py 做简单的处理<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">#</span><span style="color: #008000">font&nbsp;=&nbsp;pygame.font.Font(None,&nbsp;40)</span><span style="color: #008000"><br />
</span><span style="color: #008080">2</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;font&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pygame.font.Font(</span><span style="color: #800000">'</span><span style="color: #800000">freesansbold.ttf</span><span style="color: #800000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">40</span><span style="color: #000000">)</span></div>
<br />
最后，执行如下命令：<br />
<font face="Courier New"><strong style="color: red"><span style="color: red"><br />
python setup.py py2exe<br />
</span></strong></font><br />
<em>.........................................................<br />
<strong>关于 py2exe</strong> <br />
简介<br />
py2exe is a </em><a class="http" href="http://www.python.org/"><em>Python</em></a><em> </em><a class="http" href="http://www.python.org/doc/current/dist/"><em>Distutils</em></a><em> extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.<br />
下载<br />
<font face="Courier New"><a href="http://sourceforge.net/projects/py2exe/">http://sourceforge.net/projects/py2exe/</a><br />
</font></em><br />
<br />
</font>
 <img src="http://www.cnblogs.com/WuErPIng/aggbug/980272.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/WuErPIng/archive/2007/12/02/980272.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2007/12/02/980272.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>关于模板化的friend class</title><link>http://www.cnblogs.com/WuErPIng/archive/2007/03/17/678025.html</link><dc:creator>吴尔平</dc:creator><author>吴尔平</author><pubDate>Sat, 17 Mar 2007 02:34:00 GMT</pubDate><guid>http://www.cnblogs.com/WuErPIng/archive/2007/03/17/678025.html</guid><description><![CDATA[<p>阅读: 858 评论: 1 作者: <a href="http://www.cnblogs.com/WuErPIng/" target="_blank">吴尔平</a> 发表于 2007-03-17 10:34 <a href="http://www.cnblogs.com/WuErPIng/archive/2007/03/17/678025.html" target="_blank">原文链接</a></p><span style="COLOR: #c0c0c0">&nbsp;&nbsp;&nbsp;&nbsp;2007-3-17 10:42&nbsp;&nbsp; By WuErPing </span><br><br>&nbsp;&nbsp;&nbsp; 首先，C++标准在这个地方定义得不精确，这就给厂商的实现带来了想象的空间。VC和GCC在这里就有不得不注意的差别<br>&nbsp;&nbsp;&nbsp;&nbsp;代码一、VC的实现(7.1, 8)<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyClass<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;_T;<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;PrivatePrint(){&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">void&nbsp;PrivatePrint()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;};<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyFriend<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">18</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">19</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">20</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print(MyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">_T</span><span style="COLOR: #000000">&gt;&amp;</span><span style="COLOR: #000000">&nbsp;my)<br></span><span style="COLOR: #008080">21</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">22</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my.PrivatePrint();<br></span><span style="COLOR: #008080">23</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">24</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="COLOR: #008080">25</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">26</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;_TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br></span><span style="COLOR: #008080">27</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">28</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">MyFriend</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;my;<br></span><span style="COLOR: #008080">29</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyFriend&nbsp;myf;<br></span><span style="COLOR: #008080">30</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myf.print(my);<br></span><span style="COLOR: #008080">31</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">32</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>&nbsp;&nbsp;&nbsp; 代码二、GCC(3.4.4)<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ExtractType<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;_T&nbsp;type;<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyClass<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ExtractType</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::type;<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;PrivatePrint(){&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">void&nbsp;PrivatePrint()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;};<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="COLOR: #008080">18</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">19</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyFriend<br></span><span style="COLOR: #008080">20</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">21</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">22</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;_T</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">23</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print(MyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">_T</span><span style="COLOR: #000000">&gt;&amp;</span><span style="COLOR: #000000">&nbsp;my)<br></span><span style="COLOR: #008080">24</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">25</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my.PrivatePrint();<br></span><span style="COLOR: #008080">26</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">27</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="COLOR: #008080">28</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">29</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br></span><span style="COLOR: #008080">30</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">31</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyClass</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">MyFriend</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;my;<br></span><span style="COLOR: #008080">32</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyFriend&nbsp;myf;<br></span><span style="COLOR: #008080">33</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myf.print(my);<br></span><span style="COLOR: #008080">34</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">35</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>比较两个代码的实现，VC的方法显得自然而易于理解，也符合常理，要用到技巧来解决语法问题终归是对程序员的不友好 。 不过没有使用4.0以上的GCC版本，不知道是否有改变。 <br><br>
<img src="http://www.cnblogs.com/WuErPIng/aggbug/678025.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/WuErPIng/archive/2007/03/17/678025.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/WuErPIng/archive/2007/03/17/678025.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>