﻿<?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>C++博客-flushthink</title><link>http://www.cppblog.com/flushthink/</link><description>just for essential skill</description><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2026 02:45:33 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2026 02:45:33 GMT</pubDate><ttl>60</ttl><item><title>wow私服，arcemu trunk源码编译架设</title><link>http://www.cppblog.com/flushthink/archive/2010/12/02/135221.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Wed, 01 Dec 2010 21:15:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/12/02/135221.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/135221.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/12/02/135221.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/135221.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/135221.html</trackback:ping><description><![CDATA[<p>对我架设一个wow私服，意义有二：1. 玩wow过程中，碰到一些实现手法不解的地方，可以实时去调试。2. 基于此服务端模拟wow客户端若干特性，比如地图资源异步加载，角色并行状态处理等。<br><br>需要工具：<br>1. visual studio 2010(arcemu trunk windows版本解决方案使用)，不建议强制修改visual studio版本，因为可能丢失工程配置参数信息。<br>2. mysql，SQLyog。（mysql数据库不用说了，随便什么版本，SQLyog主要是图形化mysql命令操作）。<br>3. svn （因为是源码编译嘛）。<br><br>源码下载：<br>1. 服务端程序arcemu trunk, <a href="https://arcemu.svn.sourceforge.net/svnroot/arcemu/trunk">https://arcemu.svn.sourceforge.net/svnroot/arcemu/trunk</a></p>
2. 服务端使用的数据库whydb, <a href="http://svn.xp-dev.com/svn/whydb-users">http://svn.xp-dev.com/svn/whydb-users</a><br>我是这样放置代码的<img src="http://www.cppblog.com/images/cppblog_com/flushthink/sss.jpg" border=0>&#160;<br><br>编译源码：<br>1. 需要简单地修改几处源码，一，src/scripts/src/InstanceScripts/Raid_ZulGurub.cpp中的第184行，将<span style="COLOR: #ff0000">?/改成*/</span>,很明显这是手误。二，src/arcemu-logonserver/LogonCommServer.cpp中的<span style="COLOR: #ff0000">第313~314行注释掉</span>，解释下情况：因为wow每个游戏服务器他们叫做Realm,每个Realm都要注册到LogonServer中。考虑到不是我的Realm不能注册到我的LogonServer，所以存在这授权处理的一关。我去掉主要是烂的去改配置文件。三，src/arcemu-world/HackFixes.cpp中<span style="COLOR: #ff0000">第54~57行注释掉</span>，解释下情况：因为官方只支持enUS和enGB，在加载spell.dbc的时候做了一个本地化核实。可以编译了。<br>2. 创建3个数据库arc_characters, arc_logon, arc_world.然后通过下图的操作<br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/sbs.jpg" border=0><br>分别将sql目录下的3800_character_structure.sql导入到arc_characters里，将2834_logon_structure.sql导入到arc_logon里。然后再将sql/character_updates目录里高于3800打头的sql导入到arc_characters，同样将sql/logon_updates目录里高于2834打头的sql导入到arc_logon。为什么不导arc_world？呵呵，因为源码里带的arc_world只是表结构定义，里面并没有数据。这个要用whydb导入。进入whydb目录，双击tool.bat就行了。<br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/baba.jpg" border=0><br>回车<br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/babaw.jpg" border=0><br>继续回车，就安装好了。<br>然后在arc_logon的表accounts里加入几个账号：<br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/bsbaaaa.jpg" border=0><br><br><br>重点说明下，此数据库，服务端程式逻辑适用于3.3.5a版本，也就是wow大灾变前夕的前一个版本。<br>所以必须准备一个3.3.5a版本的wow。我用的台服的client，当然你用国服的也是一样。很不幸的是我从3.0.3一个个patch打上来的。<br>如果你也想和我一样过一过打patch的瘾，你可以去<a href="http://tlax.5d6d.com/thread-1778-1-1.html">http://tlax.5d6d.com/thread-1778-1-1.html</a>一个个补丁下吧。<br>如下：<br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/patches.jpg" border=0><br><img src="http://www.cppblog.com/images/cppblog_com/flushthink/version.jpg" border=0><br><br>至于服务端configs里的*.conf，客户端的登陆配置，上网上随便找找就是了。<br>我要重点说下服务端适用的dbc和maps资源。如何从client取。<br>首先说dbc：编译解决方案mpqe_cpp.sln，然后将extractdbc.bat，mpqe_cpp.exe，SFmpq.dll拷贝到Data/zhTW目录下，然后执行bat就生成了dbc,然后将所有*.dbc拷贝到服务端的dbc目录里。<br>再次说maps：编译解决方案AD100.sln，然后将ad.exe拷贝到world of warcraft目录，和data同层，然后再将Data/zhTW里的locale-zhTW.MPQ拷贝到Data里（因为这个程序比较傻，他没有递归遍历到所有的档案，他想从locale-zhTW.MPQ里去找Map.dbc），然后执行ad.exe，然后将maps里所有的.bin文件拷贝到server的maps里就ok了，基本配置配置就可以跑了。<br>有什么不清楚的再讨论吧。<img height=667 src="http://www.cppblog.com/images/cppblog_com/flushthink/babaaaaw.jpg" width=1105 border=0><br>
 <img src ="http://www.cppblog.com/flushthink/aggbug/135221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-12-02 05:15 <a href="http://www.cppblog.com/flushthink/archive/2010/12/02/135221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>template tips</title><link>http://www.cppblog.com/flushthink/archive/2010/12/02/135216.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Wed, 01 Dec 2010 19:56:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/12/02/135216.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/135216.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/12/02/135216.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/135216.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/135216.html</trackback:ping><description><![CDATA[1.当template parameters和call parameters之间没有明显联系，而且编译器无法推导出template parameters时，必须明确地再调用时指定template arguments<br>2.如果template parameters作为返回类型，那么也必须显式地指定template parameters，不过你可以把这个返回类型放在template parameters的第一个位置，只指定第一template parameters,其他的让编译器去推导。<br>3.就像functions一样，function templates也可以被重载。<br>4.在编译的过程中，编译器会根据每次具体使用的函数（带有template的function），来生成具体的函数代码实例。<br>5.在自变量推导过程中，惟有当参数不是一个reference类型时，array才会退化为pointer（通过称为退化）。<br>6.function template或class template的implement必须放在.hw文件里。常规的编程方法是把function或class的declare放在.h的文件中，把implement放在.cpp中，对应declare的implement已经在编译时生成了编译符号，所以可以在运行时调用。而function template或class template不同，它要针对具体的template parameters去生成不同的实例，而这个过程不会去多次解析放在cpp中的实现。<br>
<img src ="http://www.cppblog.com/flushthink/aggbug/135216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-12-02 03:56 <a href="http://www.cppblog.com/flushthink/archive/2010/12/02/135216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>event driver</title><link>http://www.cppblog.com/flushthink/archive/2010/11/11/133320.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Thu, 11 Nov 2010 08:04:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/11/11/133320.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/133320.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/11/11/133320.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/133320.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/133320.html</trackback:ping><description><![CDATA[ 事件机制最大的好处就是实现了伪并行。
os层提供了thread通过切换时间片来实现软件层面最真的并发。
事件机制处理，通过遍历一个事件的若干个订阅者来实现出类型的并发。<img src ="http://www.cppblog.com/flushthink/aggbug/133320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-11-11 16:04 <a href="http://www.cppblog.com/flushthink/archive/2010/11/11/133320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sandbox</title><link>http://www.cppblog.com/flushthink/archive/2010/06/05/117216.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Sat, 05 Jun 2010 03:01:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/06/05/117216.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/117216.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/06/05/117216.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/117216.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/117216.html</trackback:ping><description><![CDATA[在系统级开发，往往需要暴露出一些api给用户使用，暴露出来的api，就像做了一个sandbox（沙箱）给孩子玩耍一样，孩子不会破坏到外面的世界。
<img src ="http://www.cppblog.com/flushthink/aggbug/117216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-06-05 11:01 <a href="http://www.cppblog.com/flushthink/archive/2010/06/05/117216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令参数类型</title><link>http://www.cppblog.com/flushthink/archive/2010/06/04/117150.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Fri, 04 Jun 2010 01:26:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/06/04/117150.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/117150.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/06/04/117150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/117150.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/117150.html</trackback:ping><description><![CDATA[ 在linux下的命令共有三种，例子说明：
1.ls -l.  这种是unix类的命令参数风格。
2.ls --help. 在linux发展，需要扩展unix的命令参数，就用这种形式。
3.ls -version，在linux图形化过程又扩充了之前的命令参数。<img src ="http://www.cppblog.com/flushthink/aggbug/117150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-06-04 09:26 <a href="http://www.cppblog.com/flushthink/archive/2010/06/04/117150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>volitale的用法条件</title><link>http://www.cppblog.com/flushthink/archive/2010/06/04/117149.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Fri, 04 Jun 2010 01:22:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/06/04/117149.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/117149.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/06/04/117149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/117149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/117149.html</trackback:ping><description><![CDATA[1.当存在线程或中断切换上下文时。
2.变量类型为寄存器类型（整形，bool等）。<img src ="http://www.cppblog.com/flushthink/aggbug/117149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-06-04 09:22 <a href="http://www.cppblog.com/flushthink/archive/2010/06/04/117149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多少人画用例？</title><link>http://www.cppblog.com/flushthink/archive/2010/01/20/106067.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Wed, 20 Jan 2010 08:20:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2010/01/20/106067.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/106067.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2010/01/20/106067.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/106067.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/106067.html</trackback:ping><description><![CDATA[这几天自己做了一个编辑器，转了一大圈又回到了用例。对需要实现什么功能模棱两可，害的一遍遍重构，后来才发现出在用例上。用例太重要了。<br>在做这款软件，我需要明确知道我需要它做什么，我的软件就要围绕着它的用途逐一展开。如果在用例的时候就扭曲了，最后它就像一篇走了题的作文，技巧用的再多那都毫无价值。至于类图设计阶段，要尽量做到类体积均衡，一类负责一事。设计类的时候，内存模型，线程模型作为基准。尽量少用内存，在不影响效率的情况下用new。做好new对内存环境潜在的破坏修复。以及后面时序图阶段，保证某一条或某几条时序执行效率（io效率，循环中无效剔除效率）。
<img src ="http://www.cppblog.com/flushthink/aggbug/106067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2010-01-20 16:20 <a href="http://www.cppblog.com/flushthink/archive/2010/01/20/106067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>serialize</title><link>http://www.cppblog.com/flushthink/archive/2009/11/26/101943.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Wed, 25 Nov 2009 23:33:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2009/11/26/101943.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/101943.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2009/11/26/101943.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/101943.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/101943.html</trackback:ping><description><![CDATA[<p>序列化文件可能要注意的几点：（不足给予补充）<br>1.不同cpu体系结构的硬件所支持的字节序不同，所以序列化的目标数据要以一种字节序为主，一般分为小端，大端，本地端（根据程序运行的机器来的）。<br>2.在序列化的时候就要考虑反序列化的一些便利，可以对原始数据类型做分类，所有组合原始数据的高级数据一般通过索引原始数据来获取（这样也降低了数据冗余），这样你就可以保证数据的chunk化。<br>3.尽可能地让文件格式不同于其他，为了此文件格式的扩展可以做一些版本指定。<br>4.如果你考虑到serialize的灵活性，就一定要抽象device以及stream这2个概念，device控制着使用什么stream去读写，而stream直接操纵buffer，所以在stream你可以控制读写数据的安全性（多线程）与效率。</p>
5.现在不只考虑serialize单个文件，而考虑序列化一个文件层次结构到硬盘，一般会抽象出个archive来，这个archive存储在硬盘上，所以首先这些数据的序列化必须满足os的文件系统格式（这个不用担心了，直接操作FILE，fstream就ok了），而后为了数据包装（一是为了安全，二是为了大小，三是为了不凌乱），我们一般要对archive进行拓展，拓展archive的行为，比如在内存写到硬件这个基本函数的进行压缩并加密，而在硬盘恢复到内存这个基本函数上进行解压缩并解密，这里存在个问题，archive不是一次性读取到内存，所以最好给每个archive做个头数据，至少保证这个头数据一定要读到内存，头数据的意义就是选择性地读取archive的数据段，罗列archive的层次结构等（至于大小写敏感的问题，尽量做一些协调）。
<img src ="http://www.cppblog.com/flushthink/aggbug/101943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2009-11-26 07:33 <a href="http://www.cppblog.com/flushthink/archive/2009/11/26/101943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模型视图变换时，法线向量要乘模型视图矩阵的逆转置矩阵</title><link>http://www.cppblog.com/flushthink/archive/2009/11/19/101380.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Thu, 19 Nov 2009 06:38:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2009/11/19/101380.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/101380.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2009/11/19/101380.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/101380.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/101380.html</trackback:ping><description><![CDATA[早前一直被这个问题困惑，但是自己推倒了很多遍也没推出来。<br>哎，在gameres上搜了3年前的谈话，后来在gamedev搜到了答案。<br>其实在计算机图形学中，只要是变换，无论平移，旋转，缩放，都是乘一个矩阵。<br>在模型视图变换时，顶点乘模型视图变换矩阵，而顶点对应的顶点法线向量（或其他的法线向量）则要乘模型视图矩阵的逆转置矩阵。<br>顶点和法线都是向量，他们的区别是什么？无非顶点是&lt;x, y, z&gt;表示缺省的&lt;x, y, z, 1&gt;，而法线向量是&lt;x, y, z&gt;表示缺省的&lt;x, y, z, 0&gt;。关于为什么是这样，不用我说了吧，2个顶点向量减下看看就知道了。<br>从这点来看，确实不同，或许就是这个不同，造成了变换的不同吧。<br>法线向量只能保证方向的一致性，而不能保证位置的一致性，所以，所有线向量必须以面的形式进行变换，如下：<br>
<h2>Transforming Planes</h2>
<p>If we have a plane vector <strong>n</strong> = [a, b, c, d] which describes a plane then for any point <strong>p</strong> = [x, y, z, 1] in that plane the follow equation holds:</p>
<p><strong>n</strong><sup>t</sup> <strong>p</strong> = ax + by + cz + d = 0 </p>
<p>If for a point <strong>p</strong> on the plane, we apply an invertible transformation <strong>R</strong> to get the transformed point <strong>p<sub>1</sub></strong>, then the plane vector <strong>n<sub>1</sub></strong> of the transformed plane is given by applying a corresponding transformation <strong>Q</strong> to the original plane vector <strong>n</strong> where <strong>Q</strong> is unknown.
<p><strong>p<sub>1</sub></strong> = <strong>R</strong> <strong>p</strong> <br><strong>n<sub>1</sub></strong> = <strong>Q</strong> <strong>n</strong> <br></p>
We can solve for <strong>Q</strong> by using the resulting plane equation: <br>
<p><strong>n<sub>1</sub></strong><sup>t</sup> <strong>p<sub>1</sub></strong> = 0 <br></p>
Begin by substituting for <strong>n<sub>1</sub></strong> and <strong>p<sub>1</sub></strong>: <br>
<p>(<strong>Q</strong> <strong>n</strong>)<sup>t</sup> (<strong>R</strong> <strong>p</strong>) = 0 <br><strong>n</strong><sup>t</sup> <strong>Q</strong><sup>t</sup> <strong>R</strong> <strong>p</strong> = 0 <br></p>
If <strong>Q</strong><sup>t</sup> <strong>R</strong> = <strong>I</strong> then <strong>n</strong><sup>t</sup> <strong>Q</strong><sup>t</sup> <strong>R</strong> <strong>p</strong> = <strong>n</strong><sup>t</sup> <strong>I</strong> <strong>p</strong> = <strong>n</strong><sup>t</sup> <strong>p</strong> = 0 which is given.<br>
<p><strong>Q</strong><sup>t</sup> <strong>R</strong> = <strong>I</strong> <br><strong>Q</strong><sup>t</sup> = <strong>R</strong><sup>-1</sup> <br><strong>Q</strong> = (<strong>R</strong><sup>-1</sup>)<sup>t</sup> <br></p>
Substituting <strong>Q</strong> back into our plane vector transformation equation we get: <br>
<p><strong>n<sub>1</sub></strong> = <strong>Q</strong> <strong>n</strong> = (<strong>R</strong><sup>-1</sup>)<sup>t</sup> <strong>n</strong> </p>
<img src ="http://www.cppblog.com/flushthink/aggbug/101380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2009-11-19 14:38 <a href="http://www.cppblog.com/flushthink/archive/2009/11/19/101380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>compiler opt</title><link>http://www.cppblog.com/flushthink/archive/2009/11/10/100551.html</link><dc:creator>tiny</dc:creator><author>tiny</author><pubDate>Mon, 09 Nov 2009 23:25:00 GMT</pubDate><guid>http://www.cppblog.com/flushthink/archive/2009/11/10/100551.html</guid><wfw:comment>http://www.cppblog.com/flushthink/comments/100551.html</wfw:comment><comments>http://www.cppblog.com/flushthink/archive/2009/11/10/100551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flushthink/comments/commentRss/100551.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flushthink/services/trackbacks/100551.html</trackback:ping><description><![CDATA[<p>公司的平台只编译了release版，我们就必须在release下写具体实现。（依赖release写debug会出问题）<br>可恶的是，我的代码对象层次颇多，所以我写了很多小函数，这些小函数在release版本下默认是内联的。<br>就这样造成了悲剧，过多的内联，把调试器都晃晕了，索性，我把编译优化关了，发现dll膨胀到2倍。<br></p>
<img src ="http://www.cppblog.com/flushthink/aggbug/100551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flushthink/" target="_blank">tiny</a> 2009-11-10 07:25 <a href="http://www.cppblog.com/flushthink/archive/2009/11/10/100551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>