??xml version="1.0" encoding="utf-8" standalone="yes"?>97久久香蕉国产线看观看,久久久久av无码免费网,久久久久无码精品http://www.shnenglu.com/epubcn/category/6041.htmlzh-cnFri, 10 Mar 2017 20:07:18 GMTFri, 10 Mar 2017 20:07:18 GMT60【原创】Windows下编?openh264 记http://www.shnenglu.com/epubcn/archive/2017/03/09/214740.htmlp色系l?/dc:creator>p色系l?/author>Thu, 09 Mar 2017 03:51:00 GMThttp://www.shnenglu.com/epubcn/archive/2017/03/09/214740.htmlhttp://www.shnenglu.com/epubcn/comments/214740.htmlhttp://www.shnenglu.com/epubcn/archive/2017/03/09/214740.html#Feedback0http://www.shnenglu.com/epubcn/comments/commentRss/214740.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/214740.html1. 安装git工具(如GitHub for Windows)Qclone源码Qhttps://github.com/cisco/openh264.git
2. 安装MinGWQ添? %YOUR MINGW INSTALL DIR%\bin\  到系l环境变? Path  中,手动修改\bin\mingw32-make.exe为make.exeQ不改也行,以后执行hȝ点)
3. q行Visual Studio Command Prompt( ?VS2013 x86 Native Tools Command PromptQ?/span>
4. 在命令行H口中,执行%YOUR MINGW INSTALL DIR%\msys\1.0\msys.batQ把MSYS命o行窗口弄出来
5. MSYS中执行一下pwd看一下当前\径,把openh264代码拯到当前\径下某个文g夹,新徏一个也?/span>
6. q入openh264目录Q执? make OS=msvc  Q注意大写Q,好了?/span>

]]>
l于在我的HP 6515B 上激zMWINDOWS 7 RTM U?/title><link>http://www.shnenglu.com/epubcn/archive/2009/08/29/94765.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Sat, 29 Aug 2009 07:39:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2009/08/29/94765.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/94765.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2009/08/29/94765.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/94765.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/94765.html</trackback:ping><description><![CDATA[ vista用了有一D|间了Q最q看同事装了个WIN 7Q挺新鲜Q决定也装一个?br>昨天晚上从远景下载了一个cn_windows_7_ultimate_x86_dvd_x15-65907.isoQ刻盘,安装Q然后开始艰苦的Ȁzd试?br>折腾到凌?点,几乎所有的Ȁz补丁、工具都试过了,是不成功,有些x弃了?br><br>今天早上h又上|搜索了一下HP 6515B相关的帖子,H然发现有h成功ȀzMQ最早的帖子是这:<br><a >http://benyouhui.it168.com/thread-985830-3-1.html</a><br><br>然后按照帖子里面的说明,下蝲安装?span style="font-family: Helvetica; border-collapse: collapse; font-size: 14px; line-height: 22px; ">grub4dosQ然后把slic.bin、grldr以及menu.lst复制到C盘下?br></span><span style="font-family: Helvetica; border-collapse: collapse; font-size: 14px; line-height: 22px; ">用SLIC_Dump_TooKit查看BIOS的SLIC版本Q原来是昄ErrorQ装了grub4dos以后Q显C?.1了?br>最后用q景论坛上一哥们儿提供的oemȀzd兯行激z,重启以后q是昄没激z,郁闷。然后又执行了一遍这个激zdL卸蝲Q但是好像显CZ么错误,不管他,重启机器?br>不甘心那Q运行SLIC_Dump_TookitQ又昄Error了,再试一遍:安装grub4dosQ这下SLIC又显C?.1了。再重启机器……<br><br>q入WIN 7Q按WIN+PauseQ我靠!竟然昄Windows已激zMQ!哈哈?#8230;…gɼ差地让我给弄好了?br>亢奋?#8230;…<br><br>后来又在|上发现另外一帖子,也是用差不多的方式激zMQ不q他是导入证书ƈ用keyȀzȝQ?a >http://benyouhui.it168.com/thread-988200-1-1.html</a><br>以后有机会可以试试这U方法?br><br>接下来开始装各种各样的Y件咯……</span><img src ="http://www.shnenglu.com/epubcn/aggbug/94765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2009-08-29 15:39 <a href="http://www.shnenglu.com/epubcn/archive/2009/08/29/94765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原创】搜狐白C会阛_牧场外挂 UI源代?/title><link>http://www.shnenglu.com/epubcn/archive/2009/08/11/92913.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Tue, 11 Aug 2009 08:14:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2009/08/11/92913.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/92913.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2009/08/11/92913.html#Feedback</comments><slash:comments>32</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/92913.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/92913.html</trackback:ping><description><![CDATA[好多朋友需要我写的阛_牧场外挂的界面代码,今天抽空打了个包Q提供给各位下蝲?br><br>一些说明:<br><br>1、界面主要是ZXT的早期版本(大概??q前的版本)中rip出来的代码,做了一些修攏V代码中q有不少问题Q我没有M正。因为我工作中写界面是不用MFC的,q次是ؓ了写q个外挂才把以前的老界面coded来?br><br>2、源代码解压后,有个XTUILib目录Q里面就是rip出来的全部XT的代码。把q个目录搞到你的工程中去以后Q还有很多其他事情要做:<br>Q?Qresource.h中所有以XT或XTP开头的资源IDQ要搞到你的工程去;<br>Q?Qrc文g中所有以XT或XTP开头的资源Q主要是一些图标、对话框、bitmap之类的)也要搞到你的工程里去Q资源文件在res目录下你可以扑ֈ?br><br>3、XT的用,误行到官网或国内其他编E站Ҏ一下,q里׃赘述了?br><br><a target="_blank">点击q里下蝲</a>Q?52KBQ?img src ="http://www.shnenglu.com/epubcn/aggbug/92913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2009-08-11 16:14 <a href="http://www.shnenglu.com/epubcn/archive/2009/08/11/92913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原创】TinyJSON使用介绍http://www.shnenglu.com/epubcn/archive/2009/08/05/92267.htmlp色系l?/dc:creator>p色系l?/author>Wed, 05 Aug 2009 03:56:00 GMThttp://www.shnenglu.com/epubcn/archive/2009/08/05/92267.htmlhttp://www.shnenglu.com/epubcn/comments/92267.htmlhttp://www.shnenglu.com/epubcn/archive/2009/08/05/92267.html#Feedback6http://www.shnenglu.com/epubcn/comments/commentRss/92267.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/92267.html阅读全文

]]>
虚方?virtual)和抽象方?abstract)的区?/title><link>http://www.shnenglu.com/epubcn/archive/2008/04/03/46216.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Thu, 03 Apr 2008 14:41:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/04/03/46216.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/46216.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/04/03/46216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/46216.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/46216.html</trackback:ping><description><![CDATA[<p>虚方法和抽象Ҏ都可以供zc重写,它们之间有什么区别呢Q?br>1. 虚方法必L实现部分Q抽象方法没有提供实现部分,抽象Ҏ是一U强制派生类覆盖的方法,否则zcd不能被实例化。如Q? <p>//抽象Ҏ<br>public abstract class Animal<br>{<br>public abstract void Sleep();<br>public abstract void Eat();<br>}<br>//虚方?br>public class Animal<br>{<br>public virtual void Sleep(){}<br>public virtual void Eat(){}<br>} <p>2. 抽象Ҏ只能在抽象类中声明,虚方法不是。其实如果类包含抽象ҎQ那么该cM是抽象的Q也必须声明为抽象的。如Q? <p>public class Animal<br>{<br>public abstract void Sleep();<br>public abstract void Eat();<br>} <p>~译器会报错Q?br>Main.cs(10): 'VSTest.Animal.Sleep()' is abstract but it is contained in nonabstract class 'VSTest.Animal'<br>Main.cs(11): 'VSTest.Animal.Eat()' is abstract but it is contained in nonabstract class 'VSTest.Animal' <p>3. 抽象Ҏ必须在派生类中重写,q一点跟接口cMQ虚Ҏ不必。如Q? <p>public abstract class Animal<br>{<br>public abstract void Sleep();<br>public abstract void Eat();<br>}<br>public class Cat : Animal<br>{<br>public override void Sleep()<br>    {<br>        Console.WriteLine( "Cat is sleeping<img alt="" src="http://www.cnblogs.com/Images/dot.gif">" );<br>    }<br>// we need implement Animal.Eat() here<img alt="" src="http://www.cnblogs.com/Images/dot.gif"><br>} <p>~译器会报错QMain.cs(14): 'VSTest.Cat' does not implement inherited abstract member 'VSTest.Animal.Eat()'Q因为我们没有实现抽象类中所有抽象方法?/p> <img src ="http://www.shnenglu.com/epubcn/aggbug/46216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-04-03 22:41 <a href="http://www.shnenglu.com/epubcn/archive/2008/04/03/46216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q{载)IE 异步可插入协议扩?/title><link>http://www.shnenglu.com/epubcn/archive/2008/03/24/45307.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Mon, 24 Mar 2008 13:20:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/03/24/45307.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/45307.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/03/24/45307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/45307.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/45307.html</trackback:ping><description><![CDATA[<p>转蝲地址Q?a title=http://www.shnenglu.com/bigsml/archive/2008/03/23/45145.html href="http://www.shnenglu.com/bigsml/archive/2008/03/23/45145.html">http://www.shnenglu.com/bigsml/archive/2008/03/23/45145.html</a></p> <p> </p> <p>可插入协议扩展(Asynchronous Pluggable ProtocolsQ主要基于异步的URL Moniker技术?IE的URL Moniker在urlmon.dll 动态库中实现的Q?有两U处理机Ӟ<br><strong>1. ҎURL 协议调用外部E序处理</strong><br>比如telnet: or news: or mailto:Q当讉Kq些url的时候会打开相应的程序来处理?br>比如要添加note:协议(Registering an Application to a URL Protocol), 则只要修Ҏ册表<br>[HKEY_CLASSES_ROOT]<br>    [note]<br>        (Default) = "<a href="http://www.shnenglu.com/bigsml/admin/Note">URL:Note</a> Protocol"<br>        URL Protocol = ""<br>        [DefaultIcon]<br>            (Default) = "notepad.exe"<br>        [shell]<br>            [open]<br>                [command]<br>                    (Default) = "c:\windows\notepad.exe %1"<br>在IE 中输?note://xxx.txt 的时候会自动用notepad 打开xxx.txt 文g <p><strong>2. ҎURL 协议调用cd象来处理<br></strong>可以ҎURL 协议或者MIME type 注册不同的处理对?br>有两U方式:<br>a) 通过在注册表URL 协议与COM 对象兌<br>主要在注册表中的 <br>HKEY_CLASSES_ROOT\PROTOCOLS\Handler # URL 协议<br>HKEY_CLASSES_ROOT\PROTOCOLS\Filter # Mime Filter <p>b) 通过临时注册cd象将URL 协议与其兌<br>// 注册<br>CComPtr<IInternetSession> spSession;<br>CComPtr<IClassFactory>   spCFHTTP;<br>HRESULT hr = CoInternetGetSession(0, &spSession, 0);<br>hr = FilterFactory::CreateInstance(CLSID_HttpProtocol, &spCFHTTP);<br>hr = spSession->RegisterNameSpace(spCFHTTP, CLSID_NULL, L"http", 0, 0, 0); <p>// 反注?br>spSession->UnregisterNameSpace(spCFHTTP, L"http"); <p>3. FilterFactory 的实现可以参?br><a >Asynchronous Pluggable Protocol Implementation with ATL</a><br><a >http://www.codeguru.com/cpp/com-tech/atl/misc/article.php/c37/</a><br><a >Internet Explorer下蝲文g的终极过?/a><br><a >http://blog.csdn.net/111222/archive/2002/02/09/7255.aspx</a> <p><a >通过Mime filter技术对|页源码q行qoQ监视下载文Ӟ</a><br><a >http://blog.csdn.net/lion_wing/archive/2006/06/27/839134.aspx</a><br><a >HTML代码qo技?/a><br><a >http://blog.csdn.net/lion_wing/articles/534716.aspx</a> <p>About Asynchronous Pluggable Protocols QMSDNQ?br><a >Internet Explorer ~程qͼ九)在自q览器中嵌入Google工具?/a><br><a >http://blog.csdn.net/CathyEagle/archive/2005/12/12/550698.aspx</a><br><a >?000分,高手q来动手试试Q如何提取AJAX里的HTML内容Q?br></a><a >http://topic.csdn.net/t/20061214/12/5230161.html</a><br>q里主要通过监视IE 的下载从而保存Google Map 的地图数据文?  通过监视http & text/html & application/javascript 的内Ҏ获取囄文gURL ?信息.. :)</p> <img src ="http://www.shnenglu.com/epubcn/aggbug/45307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-03-24 21:20 <a href="http://www.shnenglu.com/epubcn/archive/2008/03/24/45307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q{帖)目Zp|&mdash;&mdash;从需求的角度出发http://www.shnenglu.com/epubcn/archive/2008/02/01/42359.htmlp色系l?/dc:creator>p色系l?/author>Fri, 01 Feb 2008 09:16:00 GMThttp://www.shnenglu.com/epubcn/archive/2008/02/01/42359.htmlhttp://www.shnenglu.com/epubcn/comments/42359.htmlhttp://www.shnenglu.com/epubcn/archive/2008/02/01/42359.html#Feedback0http://www.shnenglu.com/epubcn/comments/commentRss/42359.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/42359.html 

原文链接Q?a title=http://www.51testing.com/?103489/action_viewspace_itemid_70804.html >http://www.51testing.com/?103489/action_viewspace_itemid_70804.html

之前一个朋友问hQ说做了那么多年开发,谈谈有些目Zp|。朋友说目p|很大的原因是在合同问题,合同没有很好的列出项目范围。其实,合同的范围只是一般的范围Q详l内容应该不属于合同的一部分。所以我觉得目最大的问题q是需求没做好。需求没有做好,主要表现在以下几个方面:


一、需求采集与分析

  1、需求采集分析时Q没有从完整的业务流E出发,Ҏx主要业务需求,而造成ơ要业务需求块的遗漏?

   之前查了我们公司一个重要项目的需求做得咋P光看需求提问单Q就发现大部分问题是关于功能需求的。而问起业务需求时Q他们说都很清楚了,但问起业务上l节处理Ӟ大家都恍然大悟:“哦,q里需要再问下客户...”?

  2、开发h员除了关注采集功能需求、外部接口需求、性能需求和一般的标准需求外Q往往Ҏ忽略pȝ领域的背景、操作环境需求、用LD需求(例如用户熟练使用的工具与ҎQ等?

二、需求定义与认

   需求规D明书是将Z思想中的概念和目标{换成正式的文档,在这个过E中Q很Ҏ产生错误Q例如表达不完整Q不正确的事实,不一致或模糊的需求等。因此,一定要正确详细的进行需求定义与验证Q确保规格化的内容确实是用户所需求的东西?

三、需求变?/strong>

  需求变更管理有两个斚wQ一是与客户怎样变更达成一_一个是q行变更程控制zd。在q两个方面都Ҏ出错?

  1、与客户达成一致方面,需要让客户意识到变更对目影响的后果,要技巧?友好性的变更加入到协商条款中。在评估需求变更达C定的影响Ӟ要试囑֍商控制变_以保证在需求变更下Q项目可以l成功?

  2、变更流E控制活动,包括怎么q行变更hQ怎么q行变更批准{过E控Ӟq要考虑为处理变更估计留出时间等{方面的问题。这斚w不遵循过E控制流E来赎ͼ很容易导致花大功夫补救的后果?

  我们公司已经对变更没有做很好的控Ӟ吃了很多亏。我们项目组是驻客户所在地办公Q开发h员经常接到客L话来提出一些功能性的变_考虑到是变_又受“客户是上帝、提高客h意度”{思想的媄响,也就痛快{应Q甚臛_Z改程序发布。客h高兴了,短期来看Q效率高Q而且q与客户打好关系。可长期来看Q上此以往Q这U行为就变成“没有跟客戯成?#8221;的花费,q还是小事,更严重的问题是,q种没有l过整体评估、媄响分析、风险识别与分析的行为,有可能改了东Ӟ拆坏了西Ӟ到最后要p更大的胦力去弥补Q吃力不讨好Q更甚的后果是因些漏z,q迟拖g目验收旉Q从而导致项目失败?



]]>
(转蝲)WM_DESTROY ?WM_NCDESTROY 消息之间有什么区?http://www.shnenglu.com/epubcn/archive/2008/01/23/41732.htmlp色系l?/dc:creator>p色系l?/author>Wed, 23 Jan 2008 10:20:00 GMThttp://www.shnenglu.com/epubcn/archive/2008/01/23/41732.htmlhttp://www.shnenglu.com/epubcn/comments/41732.htmlhttp://www.shnenglu.com/epubcn/archive/2008/01/23/41732.html#Feedback0http://www.shnenglu.com/epubcn/comments/commentRss/41732.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/41732.html原文链接 What is the difference between WM_DESTROY and WM_NCDESTROY?
在窗口销毁时有两个紧密关联的 windows 消息, 是 WM_DESTROY ?WM_NCDESTROY. 它们有何区别?
区别是 WM_DESTROY 消息是在H口销毁动作序列中的开始被发送的, ?WM_NCDESTROY 消息是在l尾. q在你的H口拥有子窗口时是个重大区别. 如果你有一个带子窗口的父窗? 那么消息的发送序?(在没有怪诞行ؓ影响的前提下) 像q样:
hwnd = parent, uMsg = WM_DESTROY
hwnd = child, uMsg = WM_DESTROY
hwnd = child, uMsg = WM_NCDESTROY
hwnd = parent, uMsg = WM_NCDESTROY
注意, 父窗口是在子H口被销毁之前收?WM_DESTROY 消息, 在子H口被销毁之后收?WM_NCDESTROY 消息.
两个销毁消? 一个在开? 一个在l尾, q意味着, 对于你自q模块, 你可以通过处理相应的消息来执行清理操作.
例如, 如果有些东西必须在开头清? 那么你可以?WM_DESTROY 消息.
WM_NCDESTROY 消息是你H口会收到的最后一个消?(在没有怪诞行ؓ影响的前提下), 因此, q里是做 "最l清? 的最佛_所.
q就是ؓ什么我们的 new scratch E序会一直等?WM_NCDESTROY 销毁它的实例变? 才会q回.
与这两个销毁消息配对的, ?WM_CREATE ?WM_NCCREATE q两个类似的消息. ?WM_NCDESTROY 是你H口收到的最后一条消息类?
WM_NCCREATE 消息是第一条消? q是一个创Z自己的实例变量的好地? 需要注意的? 如果你导?WM_NCCREATE 消息q回p|,
那么所有你收到的消息只?WM_NCDESTROY ? 不会?WM_DESTROY 消息? 因ؓ你根本就没有收到相应?WM_CREATE 消息.
那么什么是我一直在暗示?"怪诞行ؓ" ? 下一?(When the normal window destruction messages are thrown for a loop) 我们再说.



]]>
(转蝲)微Y研发75条心?/title><link>http://www.shnenglu.com/epubcn/archive/2008/01/23/41724.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Wed, 23 Jan 2008 08:55:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/01/23/41724.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/41724.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/01/23/41724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/41724.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/41724.html</trackback:ping><description><![CDATA[<p><strong>[一Q奠定基]<br></strong>1. M不能改善产品的工作,都是费旉或是偏离方向?br><strong>2. 领导者的d是努力消除程序设计师工作上的一切障,让程序设计师全力专注在真正重要的工作─改善产品?/strong><br>3. 千万不要把程序设计师的时间浪费在改善产品以外的工作上?br>4. 永远记得自己真正的目标,然后让团队用最有效又最愉快的方法把它完成?br>5. 理清详细的项目目标,可以避免在不必要的工作上费旉?br>6. 不要因ؓ制定目标需要花很多旉Q或是别人都没有做,q略了目标的制定。制定明详的目标所q旉Q绝对会让团队得到更大的好处?br>7. 事前军_最合适的优先考虑序Q以及各考虑点的质量规范Q能够指引开发团队的工作? <p><strong>[二.{略性的作业方式]</strong><br><strong>8. 错虫愈晚清除Q时间花得愈多。毕竟,您得知道E序是怎么写的Q才能判断那里出了错虫;刚写完的E序记忆ҎQ一q前写的E序可能早就忘了</strong>?br>9. 在开发的q程q即除虫,可以让您早些学到l验Q然后就不会再犯同样的错误;相反圎ͼ如果C目后期才发玎ͼ您可能已l犯q多ơ同L错误而不自知?br>10. 发现错虫而立即除错是一U缓冲器Q提醒那些讲求快速而不够}慎的E序设计师,以后多加心。如果您坚持错虫全都清除了才能开发新的功能,可以防止所有的E序处于半完成状态,因ؓ错虫太多而ə目延误乃至无法推出Q相反地Q如果您允许错虫的存在,{于是埋下了目失控的地P最后看似完成的目Q其实已l失控?br>11. 若能保持没有M错虫Q您p比较准确估出目的完成时间。不必猜? 2功能和1 742个错虫共要花费多时_只要估算3 2功能的工作旉p了。更重要的时Q万一到时候有些功能做不完Q您可以做多算多少Q因Y件一直保持在无错误状态?br>12. 不要把策略性工作方式当作训l的教条Q应该向l员解释q些工作方式的内涵与用意?br>13. 提出_详尽的问题,可以引导出真正有效的{略性工作方式,帮助目目标利完成?br>14. {略不是ȝ定律Q要把它当作指导原则来活用。大部分的时候都应该遵@Q但也有例外的时候? <p><strong>[三.保持q度]</strong><br>15. 定期暂停手边的工作,然后往前思考,随时做必要的修正Q以避免未来的大障碍?br><strong>16. 有什么事情是我今天能做,而且可以帮助目在未来几个月内顺利进行的Q?/strong><br>17. 不要费旉在错误的问题上,一定要先确定真正的问题在哪里,然后才去Ҏ它?br><strong>18. Z开口要求的东西未必是他真正惌的。处理他的要求之前,请务必确定他I竟惌做什么?/strong><br>19. l对不要{应别h自己做不到的事情Q这样对双方都有益无実?br>20. 不要Z讨好别h而伤宛_方的工作q程Q您永远要根据自q目标Q做适当的决{?br>21. 是您在ؓ目负责。不要让M人的ȝ目的进行,包括上的徏议?br>22. 天下没有真正免费的Y?br>23. 应该开发策略上h重要性的功能Q而不是把媒体的评比项目都做齐全?br>24. 软g产品的开发,不能只ؓ了有、挑战性,或是够有个性够令h眩目?br>25. 不要把时间浪费在无法改善产品的工作上Q即使这么做在将来会有潜在的利益Q也要与现在投入的时间成本做个衡量? <p><strong>[四.走向极端的狂热]</strong><br>26. 定您所要求的报告真的值得属下暂停工作Q花那么多时间去写?br>27. 利用目查报告来改进软g开发的工作E序。ؓ了报告发生作用Q报告中必须实描述我们q次解决问题的每一个详l步骤,以及来应该如何q用q项新发现?br>28. h意定期会议的价|定它值得每个人放下手上的工作?br><strong>29. 召开M会议之前Q请定本次会议的目的是什么,达成q个目的的条件是什么,然后Q务必达到开会的目的?/strong><br>30. 试着排除不必要的后箋工作? <p><strong>[五.q度狂]</strong><br>31. 不要利用q程表来׃ə目的进行,q对组的士气伤宛_大了?br>32. 让日E表l持适度的紧q,但又是可以做到的Q好让组员振奋、不松懈Q专心致力于目的推q?br><strong>33. l对不要草率定出不可能的期限Q导致组员ؓ了赶q度而损害品的质量?/strong><br>34. 把长期的大项目,分成几个完整而独立的项目,各小目必须有一个主题?br>35. Z保持创意的活力和团队士气Q必让每一个小目都有令h兴奋的结果?br><strong>36. 产品的质量远比遵守期限重?</strong> <p><strong>[六.学无止境]</strong><br><strong>37. 不要让程序设计师的学习停滞不前,要让E序设计师有Z练不同领域的技术,培养十八般武艺样L通的l员?br></strong>38. 训练新进E序设计师时Q先培养他对整个公司所有项目都有h值的技术,然后才培L目独有的技术?br>39. 不要舍不得放您最优秀的程序设计师到别的项目去。如果他在您的项目已l没有新的东西可学,Z公司和他个h的前途,您应该把他推荐到别的目Q让他的成长怸间断?br>40. 定每位l员、每两个月都有一Ҏ术上q步?br>41. 一发现某处需要改q,q即采取更正的行动?br><strong>42.不要用年l考评来订立学习目标,要利用年l考评来记录个人的成长?/strong><br>43. l对不要让组员一直做同样的工作,q样是限制了他的学习Q他停滞在原来的领<br>域。一旦程序设计师_N了某一个领域,p他换别的领域做做看,永远让他们学习新的技术?br>44. 各种技术的用途范围有所不同Q有的技术在一般的目都用得上Q有的技术只有在特定性质的项目才用得上。当您训l您的组员时Q必让他们的技术能在公司发挥最大的用处Q最好的办法是Q把应用范围最q的技术放在训l的最前期Q应用范围最的技术放在最后训l?br><strong>45. 优秀的程序设计师是项目经理最需要的Q所以经理们通常舍不得让自己手下功力最强的人到别组去,但是如果q位W一高手在本l内再也没有C西可学时Q经理就应该让他到别的项目去Q一斚w他个人可以重新开始另一ơ的成长Q一斚w让接替他的h学着承担重要的工作,最后公司的q_E序技术水准因而提升,对大安很有好处?/strong><br>46. Z保每位E序设计师的技术都在稳定地q步Q一定要让每个h有个努力的目标,最好的Ҏ是把个h的成长和目每两个月的阶D|目标相l合Q这样一q就有至六ơ的q步了。假定一位组员在公司待了五年Q那么他学? 0U新技术、或是读? 0本好书、或? 5Ҏ术加1 5本书Q对他的工作能力影响多大啊?br>47. 最好的成长目标是出于当时的需要。如果您发现有位l员工作~Z效率Q或L在犯同样的错误,最好抓住机会立即ؓ他立一个目标,q且要求他立d始改q。这U当时设立的目标让h印象深刻Q又是马上寻求改善,效果通常会非常好。比起年l考评那种模模p糊的徏议,更能引vE序设计师的重视? <p><strong>[七.态度问题]</strong><br>48. 要让每一位程序设计师都明白,写出雉误程序是很不Ҏ的,所以应该多花功夫用各种Ҏ做最d的测试?br>49. U正E序设计师以为加除错码会花太多时间的观念Q应该训l程序设计师W一个反应是考虑加上除错码是否有道理Q第二是考虑加除错码是否W合目的目标与工作的优先?br><strong>50. 当某“某g事不可能做到”Ӟ他往往是错?/strong>?br>51. 不要让凡事不能的态度ȝ了创新?br>52. 使用者和E序的撰写者一样关心速度和品质的问题?br>53. 不要让程序设计师以ؓ使用者ƈ不在乎Y件的质量?br>54. 不要l用者次品,宁愿延期交货Q务必追求质量完?br>55. E序设计师必ȝ总使用者的观点来看自己写的E序Q程序设计师必须能体会用者的感受?br>56. 在包装盒里的每一件东西,都是产品的一部分?br>57. 程序的重用性当作优先考虑的目标之一Q否则程序设计师经常做重复的工作?br>58. 充分利用现有资源或创造新资源Q以便从每一工作中获得更大的h倹{程序代码的再利用,是很好的例子,当然Q还有其他的地方可以q用“杠杆原理”?br>59. 如果您创造了一资源,q且让别人知道,那么L一天会z上用场?br>60. 从您的每件工作中创造最大的资源Q不是利用现有的杠杆,或是创造新的杠杆?br>61. 心那种“太难?#8221;?#8220;太花旉”或是“太麻?#8221;的反性反应。当您遇到别人有q种反应Q请先问自己他有没有认真思考过qg事的重要性、以及是否符合项目目标,如果您认Z其实未经深思熟虑,只是直觉的反应,那您应该把您的x告诉他,请他重新评估Q也许就会有公^的答案?br>62. Z遇到l验范围之外的事情,多少有恐惧感Q就会认?#8220;q完全不可能”而强烈反寏V试着消除q种习惯性的反应Q设法给l员灌输“只要花时间想想看Q大部分的事情都做得?#8221;的观c您不妨以这个问题来对付那种“凡事不能”的态度Q?#8220;我了解这是做不到的,但是‘如果’做得刎ͼ那你会怎么做?”然后您就会发现惊人的转变Q您马上׃听到l员七嘴八舌地说应该q样做、那样做Q说的是他们刚刚坚持做不到的事情。这?#8220;如果”把他们带ȝ觉的反应Q带到全新的思考模式,q才是他们应该做的?br><strong>63. 把用者当作什么都不懂的外行hQ是非常不好的观c每当您发现有h表露U心理,一定要立即U正Q提醒他们用者才是真正受产品好坏影响最q人,他们和程序设计师一样关心Y件的执行速度和质量?br></strong>64. 杠杆原理是您最有用的观念,扑ֈ您工作中的杠杆,您可以ؓ组、项目、公司、甚臌Y件业创造无可限量的价倹{无论如何,量利用资源q创造资源,q个原则是绝寚w不了的。在您写E序的时候注意程序代码的׃n性、训l组员的时候注意到他对公司的h|即是像函数命名q种事Q都有杠杆的存在。不做M事,都要惛_“善用资源”Qؓ未来做好准备? <p><strong>[八.沉船的感觉]<br></strong>65. 如果q度发生落后Q那表示有个地方出错了。您应该扑և问题Qƈ加以解决Q不要一呌求组员加班,在问题没有解决之前,加班是没有用的?br>66. 别误信加班等于增加生产能力,长期的加班只会伤害生产能力,寚w目没有帮助?br><strong>67. 周末是属于组员私人的旉Q不是公司的。公怸应该以打败竞争对手ؓ理由Q要求员工周末加班?/strong><br><strong>68. 思考的重要性,而不是长旉工作?/strong><br>69. 训练开发小l懂得在正常工作旉内掌握好工作的效率,不要让他们超时工作,因ؓ时工作只是费旉的假面具?br>70. 与程序设计师共同研拟Z份每日活动的旉表,把无法预期的临时公务变成固定旉处理的事情,q且把程序开发的工作攑֜最优先的地位,不要让其他次要的事情q扰到写E序?br>71. l常加班是目出问题的明显信号Q也许是因ؓȝ的观念错误或是目标不够清楚,不论是什么原因,目l理l对不能忽视q种现象Q要对这个问题正处理,目l理必须协助l员在每? 0时的工作时间里Q把事情做得更有效率?br><strong>72. 我经常听到高层主称赞组员每天ؓ公司工作很长的时_“您对公司的A献值得嘉奖Q做得很好!”q绝Ҏ错误的信息,员工应该是因为工作做得好而受到称赞,而不是因为在办公室待得久Q管理者不该把“生效率”?#8220;工作旉”混ؓ一谈,有的Z许可以用更少的时_完成两倍的工作呢?/strong><br>73. Z让组员把办公旉用在正确的地方,q提高部门的工作效率Q项目经理不但要Z们排除Q何不必要的会议、报告和杂事Q还要协助他们好好运用宝늚上班旉。您应该协助l员安排适当的每日活动表Q用一些小技巧,让组员有长段又不受干扰的旉Q适合q行开发工作?br>74. 如果您关心组员的生活Q就不要让他们把全部的时间都投入在工作。每天只要确定他们卖力工作了八小Ӟ可以把他们赶出办公室了Q当然这样做也许会有老板看不眼Q但是如果您像我一L信均衡、健L生活是一切创意的原动力,坚持这份理念吧Q?br>75. 每周工作4 0时q不是金U玉律,只不q是国的传l,而Y件开发项目大都以此ؓ前提~定日程表。所以如果一个项目需要程序设计师每周工作40 时以上才能赶上q度Q就表示有问题,也许是日E表定得太乐观,也许是程序设计师需要再训练。不怎么_q个问题一定要认真解决Q绝对不应该让程序设计师加班来I补这个漏z?/p> <img src ="http://www.shnenglu.com/epubcn/aggbug/41724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-01-23 16:55 <a href="http://www.shnenglu.com/epubcn/archive/2008/01/23/41724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)E序员生产力的提?/title><link>http://www.shnenglu.com/epubcn/archive/2008/01/23/41723.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Wed, 23 Jan 2008 08:54:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/01/23/41723.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/41723.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/01/23/41723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/41723.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/41723.html</trackback:ping><description><![CDATA[<p>如何使生产力加倍呢Q美国职业生涯规划与旉理专家Brian TracyQ集20q实务工作经验与研究Q发现能使你生力加倍的7个工作秘诀Q? <p><strong>一、全心投入工作(work harder at what you doQ:</strong>当你工作Ӟ一定要全心投入Q不要浪Ҏ_不要把工作场所当成C交场合。光q个U诀Q如果你能长期实践,p使你的生产力加倍? <p><strong>二、工作步调快Qwork fasterQ:</strong>L一U紧q感Q一ơ专心做一件事Qƈ且用最快的速度完成Q之后,立刻q入下一件工作。养成这习惯后,你会惊讶地发玎ͼ一天所能完成的工作量居然是如此地惊人? <p><strong>三、专注于高附加值的工作Qwork on higher-value activitiesQ:</strong>你要C工作时数的多寡不见得与工作成果成正比。精明的老板或是上司兛_的是你的工作数量及工作品质,工作时数q重点。因此聪明的员工Q会惛_法找出对达成工作目标及W效标准有帮助的活动,然后投入最多时间与心力在这些事情上面。投入的旉愈多Q每分钟的生产力愈高,工作l效也就提高Q自然赢得老板及上司的赏识与重用,加薪与升q在望? <p><strong>四、熟l工作(do things you are better atQ:</strong>你找出最有h值的工作目后,接着要想办法Q通过不断学习、应用、练习,熟练所有工作流E与技巧,累积工作l验Q一句话解决KNOW HOW的问题)。你的工作愈U熟Q工作所需的时间就愈短Q你的技能愈熟练Q生产力提升得愈快? <p><strong>五、集中处理(bunch your tasksQ:</strong>一个有技巧的工作人,会把许多性质相近的工作或是活动,例如Q收发E-MAIL、写信、填写工作报表、填写备忘录{等Q集中在同一个时D|处理Q这样会比一件一件分开在不同时D处理,节省一半以上的旉Q同时也能提高效率与效能? <p><strong>六、简化工作(simplify your workQ:</strong>量化工作流E,许多分开的工作步骤加以整合,变成单一dQ以减少工作的复杂度Q另外,q用授权或是外包的方式,避免把时间花费在低h值的工作上? <p><strong>七、比别h工作旉长一些(work longer hoursQ:</strong>早一点v床,早点M班,避开交通高峎ͼ中午晚一点出ȝ,l箋工作Q避开排队用餐的h潮;晚上E微留晚一些,直到交通高峰时间已q,再下班回家。如此一天可以比一般h多出2?个小时的工作旉Q而且不会影响正常的生zL调。善用这些多出来的时_可以使你的生产力加倍,q而你的收入加倍。一个成功的人,通常是一个行动派的hQ一旦懂得提升生产力的方法,׃这7个小U诀Q默记在心,不断地应用、练习,直到成ؓ工作、生zȝ习惯为止。只要养成这个习惯,你的生力一定会提高Q收入也会加倍?/p> <img src ="http://www.shnenglu.com/epubcn/aggbug/41723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-01-23 16:54 <a href="http://www.shnenglu.com/epubcn/archive/2008/01/23/41723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)用C++实现的加、减、乘、除表达式计?/title><link>http://www.shnenglu.com/epubcn/archive/2008/01/23/41717.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Wed, 23 Jan 2008 07:03:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/01/23/41717.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/41717.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/01/23/41717.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/41717.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/41717.html</trackback:ping><description><![CDATA[     摘要: 原帖地址Qhttp://www.shnenglu.com/jb8164/archive/2008/01/02/40211.html // 头文?Calc.h #ifndef __CALC_H__#define __CALC_H__#include <stack>#define ascii_int(x) (x >=&n...  <a href='http://www.shnenglu.com/epubcn/archive/2008/01/23/41717.html'>阅读全文</a><img src ="http://www.shnenglu.com/epubcn/aggbug/41717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-01-23 15:03 <a href="http://www.shnenglu.com/epubcn/archive/2008/01/23/41717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Type traits单应用:__uuidof的模?/title><link>http://www.shnenglu.com/epubcn/archive/2008/01/21/41588.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Mon, 21 Jan 2008 13:29:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/01/21/41588.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/41588.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/01/21/41588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/41588.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/41588.html</trackback:ping><description><![CDATA[<p>在VC++中,__uuidof是一个扩展操作符用于取得lg或接口的uuidQ在COM~程中经常用到。那么在其它~译器中我们如何实现q个很有用的功能呢?<br>Ҏ也许不只一U,q介l用type traits的方式来实现Qؓ了简单v见,q不使用GUIDl构来表Cuuid以省去GUID的定义和其繁琐的初始化操作,q里用一个字W串来表CZ个类的uuidQ有点类gCOM~程中的ProgIDQProgramme IDQ编EIDQCOM~程中指表示接口或组件的Ҏ记忆的名字,以下uuid都是指这个IDQ?br>首先来定义一个模板类来存储uuid<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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">template</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">typename T</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000"> _UuidTraits<br><img id=Codehighlighter1_40_42_Open_Image onclick="this.style.display='none'; Codehighlighter1_40_42_Open_Text.style.display='none'; Codehighlighter1_40_42_Closed_Image.style.display='inline'; Codehighlighter1_40_42_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_40_42_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_40_42_Closed_Text.style.display='none'; Codehighlighter1_40_42_Open_Image.style.display='inline'; Codehighlighter1_40_42_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_40_42_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_40_42_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <p>q个cL有Q何实玎ͼuuid数据存储于其特化版本,看以下的代码<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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ClassA;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>template</span><span style="COLOR: #000000"><></span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>_UuidTraits</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">ClassA</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_45_88_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_88_Open_Text.style.display='none'; Codehighlighter1_45_88_Closed_Image.style.display='inline'; Codehighlighter1_45_88_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_45_88_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_88_Closed_Text.style.display='none'; Codehighlighter1_45_88_Open_Image.style.display='inline'; Codehighlighter1_45_88_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_45_88_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_45_88_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uuid </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ClassA</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ClassA<br><img id=Codehighlighter1_104_131_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_131_Open_Text.style.display='none'; Codehighlighter1_104_131_Closed_Image.style.display='inline'; Codehighlighter1_104_131_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_104_131_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_131_Closed_Text.style.display='none'; Codehighlighter1_104_131_Open_Image.style.display='inline'; Codehighlighter1_104_131_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_104_131_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_104_131_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">any code of ClassA</span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;</span></div> <p><br>现在我们可以通过 _UuidTraits<TheClass>::uuid 来取cClassA的uuid来,方便使用我们定义一个宏<br>#define __uuidof(x) (_UuidTraits<x>::uuid)<br>但这样只实现了ClassA的uuidQ如果ؓ每个c都写一个_UuidTraits的特化版本有点篏Q但我们可以用宏来简?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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> DEFINE_UUID(x, uuidofx) \</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> x; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>template</span><span style="COLOR: #000000"><></span><span style="COLOR: #000000"> \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>_UuidTraits</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">x</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> \<br><img id=Codehighlighter1_79_124_Open_Image onclick="this.style.display='none'; Codehighlighter1_79_124_Open_Text.style.display='none'; Codehighlighter1_79_124_Closed_Image.style.display='inline'; Codehighlighter1_79_124_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_79_124_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_124_Closed_Text.style.display='none'; Codehighlighter1_79_124_Open_Image.style.display='inline'; Codehighlighter1_79_124_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_79_124_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_79_124_Open_Text><span style="COLOR: #000000">{ \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uuid </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> #uuidofx; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">; \</span></div> <p><br>q样我们可以方便的为类定义uuid了,比如Q?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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">DEFINE_UUID(ClassB,  ClassB) <br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ClassB<br><img id=Codehighlighter1_43_66_Open_Image onclick="this.style.display='none'; Codehighlighter1_43_66_Open_Text.style.display='none'; Codehighlighter1_43_66_Closed_Image.style.display='inline'; Codehighlighter1_43_66_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_43_66_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_43_66_Closed_Text.style.display='none'; Codehighlighter1_43_66_Open_Image.style.display='inline'; Codehighlighter1_43_66_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_43_66_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_43_66_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">any code of ClassB</span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;</span></div> <p><br>OKQ现在试试__uuidof(ClassB)Q应该返回字W串"ClassB"了?br>q有一点要说明的是Qؓ了能兼容UNICODEQ可以定义两个版本的DEFINE_UUIDQ?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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#ifdef UNICODE<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> DEFINE_UUID(x, uuidofx) \</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> x; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>template</span><span style="COLOR: #000000"><></span><span style="COLOR: #000000"> \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>_UuidTraits</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">x</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> \<br><img id=Codehighlighter1_94_143_Open_Image onclick="this.style.display='none'; Codehighlighter1_94_143_Open_Text.style.display='none'; Codehighlighter1_94_143_Closed_Image.style.display='inline'; Codehighlighter1_94_143_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_94_143_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_94_143_Closed_Text.style.display='none'; Codehighlighter1_94_143_Open_Image.style.display='inline'; Codehighlighter1_94_143_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_94_143_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_94_143_Open_Text><span style="COLOR: #000000">{ \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> wchar_t </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uuid </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> L#uuidofx; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> DEFINE_UUID(x, uuidofx) \</span><span style="COLOR: #000000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> x; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>template</span><span style="COLOR: #000000"><></span><span style="COLOR: #000000"> \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>_UuidTraits</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">x</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> \<br><img id=Codehighlighter1_234_279_Open_Image onclick="this.style.display='none'; Codehighlighter1_234_279_Open_Text.style.display='none'; Codehighlighter1_234_279_Closed_Image.style.display='inline'; Codehighlighter1_234_279_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_234_279_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_234_279_Closed_Text.style.display='none'; Codehighlighter1_234_279_Open_Image.style.display='inline'; Codehighlighter1_234_279_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_234_279_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_234_279_Open_Text><span style="COLOR: #000000">{ \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uuid </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> #uuidofx; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">; \<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span></div> <p><br>q样在用UNICODE字符~码~译Ӟ__uuidofq回的就是unicode字符串了</p> <img src ="http://www.shnenglu.com/epubcn/aggbug/41588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-01-21 21:29 <a href="http://www.shnenglu.com/epubcn/archive/2008/01/21/41588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转蝲] 使用CDC的四个派生类QCClientDC,CPaintDC,CWindowDC,CMetaFileDChttp://www.shnenglu.com/epubcn/archive/2008/01/20/41542.htmlp色系l?/dc:creator>p色系l?/author>Sun, 20 Jan 2008 14:13:00 GMThttp://www.shnenglu.com/epubcn/archive/2008/01/20/41542.htmlhttp://www.shnenglu.com/epubcn/comments/41542.htmlhttp://www.shnenglu.com/epubcn/archive/2008/01/20/41542.html#Feedback0http://www.shnenglu.com/epubcn/comments/commentRss/41542.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/41542.html阅读全文

]]>
[转蝲] 堆(heapQ和?stack)的区?/title><link>http://www.shnenglu.com/epubcn/archive/2008/01/20/41540.html</link><dc:creator>p色系l?/dc:creator><author>p色系l?/author><pubDate>Sun, 20 Jan 2008 14:02:00 GMT</pubDate><guid>http://www.shnenglu.com/epubcn/archive/2008/01/20/41540.html</guid><wfw:comment>http://www.shnenglu.com/epubcn/comments/41540.html</wfw:comment><comments>http://www.shnenglu.com/epubcn/archive/2008/01/20/41540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/epubcn/comments/commentRss/41540.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/epubcn/services/trackbacks/41540.html</trackback:ping><description><![CDATA[<p><strong>一、预备知识—程序的内存分配</strong></p> <p>一个由C/C++~译的程序占用的内存分ؓ以下几个部分:</p> <ol> <li>栈区QstackQ—由~译器自动分配释放,存放函数的参数|局部变量的值等。其操作方式cM于数据结构中的栈? <li>堆区QheapQ—一般由E序员分配释放,若程序员不释放,E序l束时可能由OS回收。注意它与数据结构中的堆是两回事Q分配方式倒是cM于链表,呵呵? <li>全局区(静态区Q(staticQ—全局变量和静态变量的存储是放在一块的Q初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在盔R的另一块区域。程序结束后ql释放? <li>文字帔R区—常量字W串是攑֜q里的。程序结束后ql释放? <li>E序代码区—存攑ևC的二q制代码?</li> </ol> <p> </p> <p><strong>二、例子程?/strong></p> <p>q是一个前辈写的,非常详细?/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"><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">main.cpp</span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">全局初始化区</span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p1;   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">全局未初始化?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">main()<br><img id=Codehighlighter1_61_349_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_349_Open_Text.style.display='none'; Codehighlighter1_61_349_Closed_Image.style.display='inline'; Codehighlighter1_61_349_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_61_349_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_349_Closed_Text.style.display='none'; Codehighlighter1_61_349_Open_Image.style.display='inline'; Codehighlighter1_61_349_Open_Text.style.display='inline';" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_61_349_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_61_349_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> b;?br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> s[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p2;         </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123456</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">123456\0在常量区Qp3在栈上?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">Q?nbsp;  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">全局Q静态)初始化区</span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  p1 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)malloc(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>  p2 </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)malloc(</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">);   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">分配得来?0?0字节的区域就在堆区?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">  strcpy(p1,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">123456</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);   </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">123456\0攑֜帔R区,~译器可能会它与p3所?123456"优化成一个地斏V?/span><span style="COLOR: #008000"><br><img src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span></div> <p> </p> <p><strong>三、堆和栈的理论知?/strong></p> <p><strong>2.1 甌方式<br></strong>stack:<br>       ql自动分配。例如,声明在函C一个局部变量int b;pȝ自动在栈中ؓb开辟空?br>heap:<br>       需要程序员自己甌Qƈ指明大小Q在c中malloc函数<br>               如p1=(char*)malloc(10);<br>               在C++中用newq算W?br>               如p2=(char*)malloc(10);<br>               但是注意p1、p2本n是在栈中的? <p><strong>2.2 甌后系l的响应</strong><br>栈:只要栈的剩余I间大于所甌I间Q系l将为程序提供内存,否则报异常提示?br>        溢出?br>堆:首先应该知道操作pȝ有一个记录空闲内存地址的链表,当系l收到程序的甌Ӟ<br>       会遍历该链表Q寻扄一个空间大于所甌I间的堆l点Q然后将该结点从I闲l点<br>       链表中删除,q将该结点的I间分配l程序,另外Q对? <p>大多数系l,会在q块内存I间中的首地址处记录本ơ分配的大小Q这P代码中的delete语句才能正确的释放本内存I间。另外,׃扑ֈ的堆l点的大不一定正好等于申L大小Q系l会自动的将多余的那部分重新攑օI闲链表中? <p><strong>2.3 甌大小的限?/strong><br>栈:在Windows?栈是向低地址扩展的数据结构,是一块连l的内存的区域。这句话?br>        意思是栈顶的地址和栈的最大容量是pȝ预先规定好的Q在WINDOWS下,栈的?br>        是2MQ也有的说是1MQM是一个编译时q定的常数Q,如果甌的空间超<br>        q栈的剩余空间时Q将提示overflow。因此,能从栈获得的I间较小?br>堆:堆是向高地址扩展的数据结构,是不q箋的内存区域。这是由于系l是用链表来?br>        储的I闲内存地址的,自然是不q箋的,而链表的遍历方向是由低地址向高地址?br>        堆的大小受限于计机pȝ中有效的虚拟内存。由此可见,堆获得的I间比较灉|Q?br>       也比较大? <p><strong>2.4甌效率的比?/strong><br>?ql自动分配,速度较快。但E序员是无法控制的?br>?是由new分配的内存,一般速度比较慢,而且Ҏ产生内存片,不过用v来最方便.<br>     另外Q在WINDOWS下,最好的方式是用Virtual Alloc分配内存Q他不是在堆Q也不是?nbsp; <br>     ?而是直接在进E的地址I间中保留一块内存,虽然用v来最不方ѝ但是速度快,<br>     也最灉|? <p><strong>2.5 堆和栈中的存储内?/strong><br>栈:在函数调用时Q第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可  <br>        执行语句Q的地址Q然后是函数的各个参敎ͼ在大多数的C~译器中Q参数是由右向左<br>       入栈的,然后是函C的局部变量。注意静态变量是不入栈的。当本次函数调用l束<br>       后,局部变量先出栈Q然后是参数Q最后栈指针指向最开始存的地址Q也是d<br>       C的下一条指令,E序p点l运行?br>堆:一般是在堆的头部用一个字节存攑֠的大。堆中的具体内容q序员安排? <p><strong>2.6 存取效率的比?/strong> <p>char s1[]="aaaaaaaaaaaaaaa";<br>char *s2="bbbbbbbbbbbbbbbbb";<br>aaaaaaaaaaa是在q行时刻赋值的Q?br>而bbbbbbbbbbb是在~译时就定的;<br>但是Q在以后的存取中Q在栈上的数l比指针所指向的字W串(例如?快?br>比如Q?br>#include<br>voidmain()<br>{<br>char a=1;<br>char c[]="1234567890";<br>char *p="1234567890";<br>a = c[1];<br>a = p[1];<br>return;<br>}<br>对应的汇~代?br>10:a=c[1];<br>004010678A4DF1movcl,byteptr[ebp-0Fh]<br>0040106A884DFCmovbyteptr[ebp-4],cl<br>11:a=p[1];<br>0040106D8B55ECmovedx,dwordptr[ebp-14h]<br>004010708A4201moval,byteptr[edx+1]<br>004010738845FCmovbyteptr[ebp-4],al<br>W一U在d时直接就把字W串中的元素d寄存器cl中,而第二种则要先把指针D到edx中,在根据edxd字符Q显然慢了? <p><strong>2.7 结<br></strong>堆和栈的区别可以用如下的比喻来看出:<br>使用栈就象我们去饭馆里吃饭,只管点菜Q发出申P、付钱、和吃(使用Q,吃饱了就赎ͼ不必理会切菜、洗菜等准备工作和洗、刷锅等扫尾工作Q他的好处是快捷Q但是自由度。用堆p是自己动手做喜欢吃的菜肴Q比较麻烦,但是比较W合自己的口呻I而且自由度大?/p> <img src ="http://www.shnenglu.com/epubcn/aggbug/41540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/epubcn/" target="_blank">p色系l?/a> 2008-01-20 22:02 <a href="http://www.shnenglu.com/epubcn/archive/2008/01/20/41540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于VisualFChttp://www.shnenglu.com/epubcn/archive/2008/01/17/41372.htmlp色系l?/dc:creator>p色系l?/author>Thu, 17 Jan 2008 14:07:00 GMThttp://www.shnenglu.com/epubcn/archive/2008/01/17/41372.htmlhttp://www.shnenglu.com/epubcn/comments/41372.htmlhttp://www.shnenglu.com/epubcn/archive/2008/01/17/41372.html#Feedback0http://www.shnenglu.com/epubcn/comments/commentRss/41372.htmlhttp://www.shnenglu.com/epubcn/services/trackbacks/41372.html前段旉偶然看到VisualFCq个东东Q然后又到WINXGUIQ?a >http://www.winxgui.cn/Q上看了看,g人气不是很高Q或许跟许多Z怎么使用WTLq东东有兛_?/p>

大概看了一下,g是对WTL的一些东西的装Qƈd了可视化向导对话框,使用h更方便,上手h比较Ҏ。但是我现在q没搞清楚他整个的目录结构?/p>

先记录下来,有空的时候研I研I?)



]]>
˾þô߽AV | þþùƷһ| ƷþþþþĻ| AVþþþò| ޾Ʒtvþþþþþþ| ŷþ18| þﶼǾƷ| 69Ʒþþþþ޾Ʒ| Ҫþðѹۿ| ŷ˾þþƷ| þùŷպƷ| Ʒþþþþһ| һƷþ| 91þþþþۺ| 91ƷùۺϾþ| þþƷѹۿ97| ԭۺϾþô˵ | 鶹ŷۺϾþ| 99þþƷëƬ| þþþAVȥ| 鶹WWWþöڲƷ| ޹һ˾þþƷ| ձþ| ޹Ʒһþ| þAV| 97þþþ޾Ʒר| þù㽶һƷ| þþƷа| һþaþþƷۺҹҹ | 99þһ| Ļþһ| þþþƷһ| þǿdŮվ| ޾Ʒһþþ | aaþʦ2021Ʒ | ƷѾþ| þݺҹҹ2014| 99þ99ֻѷѾƷ | ˾þĻ| þ99Ʒһ| þþƷרѶ|