??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品一区二区久久hs,国产午夜精品理论片久久影视,久久夜色精品国产噜噜噜亚洲AVhttp://www.shnenglu.com/mtysblog/articles/139722.html_飞寒_飞寒Fri, 04 Feb 2011 08:24:00 GMThttp://www.shnenglu.com/mtysblog/articles/139722.htmlhttp://www.shnenglu.com/mtysblog/comments/139722.htmlhttp://www.shnenglu.com/mtysblog/articles/139722.html#Feedback0http://www.shnenglu.com/mtysblog/comments/commentRss/139722.htmlhttp://www.shnenglu.com/mtysblog/services/trackbacks/139722.html五大内存分区
    在C++中,内存分成5个区Q他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区?br>    栈,是那些q译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等?br>    堆,是那些由new分配的内存块Q他们的释放~译器不ȝQ由我们的应用程序去控制Q一般一个newp对应一个delete。如果程序员没有释放掉,那么在程序结束后Q操作系l会自动回收?br>    自由存储区,是那些由malloc{分配的内存块,他和堆是十分怼的,不过它是用free来结束自q生命的?br>    全局/静态存储区Q全局变量和静态变量被分配到同一块内存中Q在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有q个区分了,他们共同占用同一块内存区?br>    帔R存储区,q是一块比较特D的存储区,他们里面存放的是帔RQ不允许修改Q当Ӟ你要通过非正当手D也可以修改Q而且Ҏ很多Q?br>明确区分堆与?br>    在bbs上,堆与栈的区分问题Q似乎是一个永恒的话题Q由此可见,初学者对此往往是؜淆不清的Q所以我军_拿他W一个开刀?br>    首先Q我们D一个例子:
    void f() { int* p=new int[5]; }
    q条短短的一句话包含了堆与栈,看到newQ我们首先就应该惛_Q我们分配了一块堆内存Q那么指针p呢?他分配的是一块栈内存Q所以这句话的意思就是: 在栈内存中存放了一个指向一块堆内存的指针p。在E序会先定在堆中分配内存的大小Q然后调用operator new分配内存Q然后返回这块内存的首地址Q放入栈中,他在VC6下的汇编代码如下Q?br>    00401028   push        14h
    0040102A   call        operator new (00401060)
    0040102F   add         esp,4
    00401032   mov         dword ptr [ebp-8],eax
    00401035   mov         eax,dword ptr [ebp-8]
    00401038   mov         dword ptr [ebp-4],eax
    q里Q我们ؓ了简单ƈ没有释放内存Q那么该怎么去释攑֑Q是delete p么?澻I错了Q应该是delete []pQ这是ؓ了告诉编译器Q我删除的是一个数l,VC6׃Ҏ相应的Cookie信息去进行释攑ֆ存的工作?br>    好了Q我们回到我们的主题Q堆和栈I竟有什么区别?
    主要的区别由以下几点Q?br>    1、管理方式不同;
    2、空间大不同;
    3、能否生碎片不同;
    4、生长方向不同;
    5、分配方式不同;
    6、分配效率不同;
    理方式Q对于栈来讲Q是q译器自动理Q无需我们手工控制Q对于堆来说Q释攑ַ作由E序员控ӞҎ产生memory leak?br>    I间大小Q一般来讲在32位系l下Q堆内存可以辑ֈ4G的空_从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲Q一般都是有一定的I间大小的,例如Q在VC6下面Q默认的栈空间大是1MQ好像是Q记不清楚了Q。当Ӟ我们可以修改Q?nbsp;  
    打开工程Q依ơ操作菜单如下:Project->Setting->LinkQ在Category 中选中OutputQ然后在Reserve中设定堆栈的最大值和commit?br>注意Qreserve最gؓ4ByteQcommit是保留在虚拟内存的页文g里面Q它讄的较大会使栈开辟较大的|可能增加内存的开销和启动时间?br>    片问题Q对于堆来讲Q频J的new/delete势必会造成内存I间的不q箋Q从而造成大量的碎片,使程序效率降低。对于栈来讲Q则不会存在q个问题Q?因ؓ栈是先进后出的队列,他们是如此的一一对应Q以至于永远都不可能有一个内存块从栈中间弹出Q在他弹Z前,在他上面的后q的栈内容已l被弹出Q详l的 可以参考数据结构,q里我们׃再一一讨论了?br>    生长方向Q对于堆来讲Q生长方向是向上的,也就是向着内存地址增加的方向;对于栈来Ԍ它的生长方向是向下的Q是向着内存地址减小的方向增ѝ?br>    分配方式Q堆都是动态分配的Q没有静态分配的堆。栈?U分配方式:静态分配和动态分配。静态分配是~译器完成的Q比如局部变量的分配。动态分配由alloca函数q行分配Q但是栈的动态分配和堆是不同的,他的动态分配是q译器q行释放Q无需我们手工实现?br>    分配效率Q栈是机器系l提供的数据l构Q计机会在底层Ҏ提供支持Q分配专门的寄存器存放栈的地址Q压栈出栈都有专门的指o执行Q这决定了栈的效率?较高。堆则是C/C++函数库提供的Q它的机制是很复杂的Q例如ؓ了分配一块内存,库函C按照一定的法Q具体的法可以参考数据结?操作pȝQ在?内存中搜索可用的_大小的空_如果没有_大小的空_可能是由于内存碎片太多)Q就有可能调用系l功能去增加E序数据D늚内存I间Q这样就有机会分 到够大的内存Q然后进行返回。显Ӟ堆的效率比栈要低得多?br>    从这里我们可以看刎ͼ堆和栈相比,׃大量new/delete的用,Ҏ造成大量的内存碎片;׃没有专门的系l支持,效率很低Q由于可能引发用h?和核心态的切换Q内存的甌Q代价变得更加昂c所以栈在程序中是应用最q泛的,q是函数的调用也利用栈d成,函数调用q程中的参数Q返回地址Q?EBP和局部变量都采用栈的方式存放。所以,我们推荐大家量用栈Q而不是用堆?br>    虽然栈有如此众多的好处,但是׃和堆相比不是那么灉|Q有时候分配大量的内存I间Q还是用堆好一些?br>    无论是堆q是栈,都要防止界现象的发生(除非你是故意使其界Q,因ؓ界的结果要么是E序崩溃Q要么是摧毁E序的堆、栈l构Q生以想不到的l果,?是在你的程序运行过E中Q没有发生上面的问题Q你q是要小心,说不定什么时候就崩掉Q那时候debug可是相当困难的:Q?br>    对了Q还有一件事Q如果有人把堆栈合v来说Q那它的意思是栈,可不是堆Q呵呵,清楚了?
static用来控制变量的存储方式和可见?br>       函数内部定义的变量,在程序执行到它的定义处时Q编译器为它在栈上分配空_函数在栈上分配的I间在此函数执行l束时会释放掉,q样׃生了一个问? 如果惛_函数中此变量的g存至下一ơ调用时Q如何实玎ͼ 最Ҏ惛_的方法是定义一个全局的变量,但定义ؓ一个全局变量有许多缺点,最明显的缺Ҏ破坏了此变量的访问范_使得在此函数中定义的变量Q不仅仅受此 函数控制Q?/p>

       需要一个数据对象ؓ整个c而非某个对象服务,同时又力求不破坏cȝ装?卌求此成员隐藏在类的内部,对外不可见?/p>

       static的内部机Ӟ
       静态数据成员要在程序一开始运行时必d在。因为函数在E序q行中被调用Q所以静态数据成员不能在M函数内分配空间和初始化?br>       q样Q它的空间分配有三个可能的地方,一是作为类的外部接口的头文Ӟ那里有类声明Q二是类定义的内部实玎ͼ那里有类的成员函数定义;三是应用E序的mainQ)函数前的全局数据声明和定义处?br>      静态数据成员要实际地分配空_故不能在cȝ声明中定义(只能声明数据成员Q。类声明只声明一个类?#8220;寸和规?#8221;Qƈ不进行实际的内存分配Q所以在cd 明中写成定义是错误的。它也不能在头文件中cd明的外部定义Q因为那会造成在多个用该cȝ源文件中Q对光复定义?br>      static被引入以告知~译器,变量存储在E序的静态存储区而非栈上I间Q静?br>数据成员按定义出现的先后序依次初始化,注意静态成员嵌套时Q要保证所嵌套的成员已l初始化了。消除时的顺序是初始化的反顺序?/p>

       static的优势:
       可以节省内存Q因为它是所有对象所公有的,因此Q对多个对象来说Q静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一P但它?值是可以更新的。只要对静态数据成员的值更Cơ,保证所有对象存取更新后的相同的|q样可以提高旉效率?/p>

        引用静态数据成员时Q采用如下格式:
         <cd>::<静态成员名>
    如果静态数据成员的讉K权限允许的话(即public的成?Q可在程序中Q按上述格式
来引用静态数据成员?/p>

       PS:
      (1)cȝ静态成员函数是属于整个c而非cȝ对象Q所以它没有this指针Q这导?br>了它仅能讉Kcȝ静态数据和静态成员函数?br>      (2)不能静态成员函数定义ؓ虚函数?br>      (3)׃静态成员声明于cMQ操作于其外Q所以对其取地址操作Q就多少有些Ҏ
Q变量地址是指向其数据cd的指?Q函数地址cd是一?#8220;nonmember函数指针”?/p>

      (4)׃静态成员函数没有this指针Q所以就差不多等同于nonmember函数Q结果就
产生了一个意想不到的好处Q成Z个callback函数Q得我们得以将C++和C-based X W
indowpȝl合Q同时也成功的应用于U程函数w上?br>      (5)staticq没有增加程序的时空开销Q相反她q羃短了子类对父c静态成员的讉K
旉Q节省了子类的内存空间?br>      (6)静态数据成员在<定义或说?gt;时前面加关键字static?br>      (7)静态数据成员是静态存储的Q所以必d它进行初始化?br>      (8)静态成员初始化与一般数据成员初始化不同:
      初始化在cM外进行,而前面不加staticQ?br>以免与一般静态变量或对象相؜淆;
      初始化时不加该成员的讉K权限控制WprivateQpublic{;
           初始化时使用作用域运符来标明它所属类Q?br>           所以我们得出静态数据成员初始化的格式:
         <数据cd><cd>::<静态数据成员名>=<?gt;
      (9)Z防止父类的媄响,可以在子cd义一个与父类相同的静态变量,以屏蔽父cȝ影响。这里有一炚w要注意:我们说静态成员ؓ父类和子cd享,但我们有 重复定义了静态成员,q会不会引v错误呢?不会Q我们的~译器采用了一U绝妙的手法Qname-mangling 用以生成唯一的标志?/p>

本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/chenyq2008/archive/2008/09/27/2990070.aspx



_飞寒 2011-02-04 16:24 发表评论
]]>
[z] ?Eclipse q_q行 C/C++ 开?/title><link>http://www.shnenglu.com/mtysblog/articles/139483.html</link><dc:creator>_飞寒</dc:creator><author>_飞寒</author><pubDate>Thu, 27 Jan 2011 11:48:00 GMT</pubDate><guid>http://www.shnenglu.com/mtysblog/articles/139483.html</guid><wfw:comment>http://www.shnenglu.com/mtysblog/comments/139483.html</wfw:comment><comments>http://www.shnenglu.com/mtysblog/articles/139483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mtysblog/comments/commentRss/139483.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mtysblog/services/trackbacks/139483.html</trackback:ping><description><![CDATA[<p> </p> <h1>?Eclipse q_q行 C/C++ 开?/h1> <p><strong><font color=#666666 size=2 face=Verdana>如何使用 C/C++ 开发工LQCDTQ?/font></strong></p> <div id="prhzpdb" class="ibm-container-body ibm-two-column"> <div id="rbrzzll" class="ibm-column ibm-first"> <div id="hjlbndd" class=author><a class=dwauthor title="" rel=#authortip1 jQuery1296103079927="22" hoverIntent_t="undefined"><u><font color=#4c6e94>Pawel Leszek</font></u></a> (<a href="mailto:pawel.leszek@ipgate.pl?subject=用 Eclipse 平台进行 C/C++ 开发&amp;amp;cc="><u><font color=#4c6e94>pawel.leszek@ipgate.pl</font></u></a>), 独立软gN</div> <div style="DISPLAY: none" id=authortip1 class="dwauthor-onload-state ibm-no-print" jQuery1296103079927="21">Pawel Leszek ?<a ><u><font color=#4c6e94>Studio B</font></u></a> 的一位作Ӟ他是一位专长于 Linux/Win/Mac OS pȝ体系l构和管理的独立软gN和作家。他h许多操作pȝ、编E语a和网l协议方面的l验Q尤其是 Lotus Domino ?DB2 斚w的经验。Pawel q是 <em>LinuxWorld</em>上一pd文章的作者,以及 <em>PC World</em>波兰版的 Linux 专栏作家。Pawel 和他的妻子以及可q女儿住在华沙。欢q提问ƈ提出意见Q您可以直接l作者发电子邮gQ?<a href="mailto:pawel.leszek@ipgate.pl?cc="><u><font color=#4c6e94>pawel.leszek@ipgate.pl</font></u></a>Q?</div> <p> </p> <p><strong>介:</strong> 我们概q如何在 C/C++ 开发项目中使用 Eclipse q_。尽?Eclipse 主要是一?Java 开发环境,但其体系l构保了对其它~程语言的支持。在本文中,您将学习如何使用 C/C++ 开发工LQC/C++ Development ToolkitQCDTQ,它是可用?Eclipse 的最?C/C++ 工具?/p> <!-- <p class="ibm-no-print"> <div class="hhtnpvd" id="dw-tag-this" class="ibm-no-print"></div> <div class="ntdpzxd" id="interestShow" class="ibm-no-print"></div> </p> --> <div class="hfpbxvj" id=dw-tag-content class=ibm-no-print></div> <div class="ddpbltr" id=dw-moretags-access class=ibm-access></div> <p class=ibm-no-print> <div class="fvxjthf" id=dw-tag-this class=ibm-no-print><a class=ibm-external-link onclick="jQuery.launchTagThisWindow(); return false;" ><strong><font color=#4c6e94 size=2 face=Arial>标记本文Q?/font></strong></a></div> <div class="ppzbvdt" id=interestShow class=ibm-no-print><strong><font color=#4c6e94 size=2 face=Arial></font></strong></div> <p><strong><font color=#4c6e94 size=2 face=Arial></font></strong></p> </div> <div id="vbnxbzf" class="ibm-column ibm-second"> <p class=leading><strong>发布日期Q?/strong> 2004 q?3 ?09 ?<br><strong>U别Q?/strong> 初 <br><strong>讉K情况</strong> 11865 ơ浏?<br><strong>:</strong> <span id=nCmts>0 (<a ><u><font color=#4c6e94>d评论</font></u></a>)</span> <!-- Rating_Area_Begin --><!-- Ensure that div id is based on input id and ends with -widget --><input id=art-rating value=4 type=hidden name=ratinga></p> <div class="tpttnvr" id=art-rating-widget jQuery1296103079927="31"><a href="javascript:void(0);" jQuery1296103079927="26"><img title="点击评分 1 ? alt="1 star" src="http://www.ibm.com/developerworks/js/artrating/avg-star-on.gif" width=20 height=20></a><a href="javascript:void(0);" jQuery1296103079927="27"><img title="点击评分 2 ? alt="2 stars" src="http://www.ibm.com/developerworks/js/artrating/avg-star-on.gif" width=20 height=20></a><a href="javascript:void(0);" jQuery1296103079927="28"><img title="点击评分 3 ? alt="3 stars" src="http://www.ibm.com/developerworks/js/artrating/avg-star-on.gif" width=20 height=20></a><a href="javascript:void(0);" jQuery1296103079927="29"><img title="点击评分 4 ? alt="4 stars" src="http://www.ibm.com/developerworks/js/artrating/avg-star-on.gif" width=20 height=20></a><a href="javascript:void(0);" jQuery1296103079927="30"><img title="点击评分 5 ? alt="5 stars" src="http://www.ibm.com/developerworks/js/artrating/star-off.gif" width=20 height=20></a><span id=rateTxt><font size=2 face=Arial> q_?Q共 6 个评?Q?/font></span></div> <script language=JavaScript type=text/javascript> // <![cdata[ // widget div id and article id as args window.artRating.init('art-rating-widget'); // ]]> </script><!-- Rating_Area_End --> <p><font size=2 face=Arial></font></p> </div> </div> <!-- dW_Summary_Area_END --><!-- CONTENT_BODY --> <div class="pnhrlbz" id=ibm-content-body><!-- MAIN_COLUMN_BEGIN --> <div class="rprtvdb" id=ibm-content-main><!-- Related_Searches_Area_And_Overlays_Begin --><!-- MAIN_COLUMN_CONTAINER_BEGIN --> <div id="xvhhjrz" class=ibm-container><!-- MAIN_COLUMN_CONTENT_BEGIN --> <p>C ?C++ 语言都是世界上最行且用最普遍的编E语aQ因?Eclipse q_QEclipse PlatformQ提供对 C/C++ 开发的支持一炚w不为奇。因?Eclipse q_只是用于开发者工L一个框Ӟ它不直接支持 C/C++Q它使用外部插g来提供支持。本文将向您演示如何使用 CDT ?用于 C/C++ 开发的一l插件。CDT 目Q有关链接,请参阅本文后面的 <a ><u><font color=#4c6e94>参考资?/font></u></a>一节)致力于ؓ Eclipse q_提供功能完全?C/C++ 集成开发环境(Integrated Development EnvironmentQIDEQ。虽然该目的重Ҏ LinuxQ但它在可?GNU 开发者工L所有环境(包括 Win32QWin 95/98/Me/NT/2000/XPQ、QNX Neutrino ?Solaris q_Q中都能工作?</p> <p>CDT 是完全用 Java 实现的开放源码项目(Ҏ Common Public License 特许的)Q它作ؓ Eclipse SDK q_的一l插件。这些插件将 C/C++ 透视图添加到 Eclipse 工作収ͼWorkbenchQ中Q现在后者可以用许多视图和向g及高U编辑和调试支持来支?C/C++ 开发?/p> <p>׃其复杂性,CDT 被分成几个组Ӟ它们都采用独立插件的形式。每个组仉作ؓ一个独立自ȝ目q行q作Q有它自q一l提交者、错误类别和邮g列表。但是,所有插仉?CDT 正常工作所必需的。下面是 CDT 插gQ组件的完整列表Q?/p> <ul> <li><strong>?CDT 插gQPrimary CDT plug-inQ?/strong>?#8220;框架”CDT 插g? <li><strong>CDT 功能 EclipseQCDT Feature EclipseQ?/strong>?CDT 功能lgQFeature ComponentQ? <li><strong>CDT 核心QCDT CoreQ?/strong>提供了核心模型(Core ModelQ、CDOM 和核心组ӞCore ComponentQ? <li><strong>CDT UI</strong>是核?UI、视图、编辑器和向对{? <li><strong>CDT 启动QCDT LaunchQ?/strong>如编译器和调试器之类的外部工h供了启动机制? <li><strong>CDT 调试核心QCDT Debug CoreQ?/strong>提供了调试功能? <li><strong>CDT 调试 UIQCDT Debug UIQ?/strong>?CDT 调试~辑器、视囑֒向导提供了用L面? <li><strong>CDT 调试 MIQCDT Debug MIQ?/strong>是用于与 MI 兼容的调试器的应用程序连接器?</li> </ul> <p>现在Q让我们研究一下如何在实际应用E序中用这些组件。图 1 昄?Eclipse 中的 C/C++ 目Q?/p> <br><a name=N1008A><strong><font size=2 face=Arial>?1. 在带?CDT 插g?Eclipse 中编?C/C++ 目</font></strong></a><br><font size=2 face=Arial><img alt="?1. 在带?CDT 插g?Eclipse 中编?C/C++ 目" src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/workspace.jpg" width=580 height=418></font> <br> <p><a name=N1009A><span id="znhbvrp" class=atitle><strong><font size=5>安装和运?CDT</font></strong></span></a></p> <p>在下载和安装 CDT 之前Q首先必需保 GNU C ~译器(GNU C compilerQGCCQ以及所有附带的工具Qmake、binutil ?GDBQ都是可用的。如果正在运?<em>Linux</em>Q只要通过使用适用于您分发版的软g包管理器来安装开发Y件包。在 <em>Windows</em>q_上,需要安?Cygwin 工具(请参?<a ><u><font color=#4c6e94>参考资?/font></u></a>以获得链接)。Cygwin 是用?Windows 的类 UNIX 环境Q它包括 GCC UL以及所有必需的开发工P包括 automake ?GNU 调试器(GNU DebuggerQGDBQ。Cygwin 是在 <code>cygwin1.dll</code> 库基上构建的。Cygwin 的备用解x案是 Minimalist GNU for WindowsQMinGWQ(请参?<a ><u><font color=#4c6e94>参考资?/font></u></a>以获得链接)。该工具是一l可免费获取、自由分发的特定?Windows 的头文g和导入库Q这些头文g和导入库?GNU 工具集(它们允许您生成不依赖于Q何第三方 DLL 的本?Windows E序Q结合在一赗如果您惌创徏?POSIX 兼容?Windows 应用E序Q那?MinGW 是最佳选择。MinGW 甚至可以?Cygwin 安装之上工作?<em>Solaris</em>?<em>QNX</em>要求您从因特|下载ƈ安装其特定的 GCC、GNU Make binutils ?GDB ULQ请参阅 <a ><u><font color=#4c6e94>参考资?/font></u></a>以获得链接)?</p> <p>假设您安装了适当?Java SDK/JRE ?Eclipse q_ SDKQƈ且它们都正常q行。CDT 以两U?#8220;方式”可用Q稳定的发行版和试运行版Qnightly buildQ。试q行版未l完全测试,但它们提供了更多的功能ƈҎ了当前错误。安装之前,h查磁盘上是否存在先前版本?CDTQ如果存在,L保完全除d。因?CDT 没有可用的卸载程序,所以需要手工除d。ؓ了检查先前版本是否存在,转至 CDT 插g所ȝ的目录: <code>eclipse/plugins</code> 。接着Q除L有以 <code>org.eclipse.cdt</code> 名称开头的目录。需要做的最后一件事情是?<code>workspace/.metadata/.plugins</code> ?<code>features</code> 除去 CDT 元数据目?<code>or.eclipse.cdt.*</code> ?</p> <p>下一步是下蝲 CDT 二进制文件。注意:请下载适合于您操作pȝ的正的 CDT。遗憄是,即 CDT 是用 Java ~写的,它也不是与^台无关的。接着Q将归档文g解压C时目录中Q从临时目录所有插件目录内定wUd Eclipse <code>plugins</code> 子目录。还需要将 <code>features</code> 目录内容Ud Eclipse <code>features</code> 子目录中。现在,重新启动 Eclipse。Eclipse 再次启动之后Q更新管理器告诉您它发C更改q询问您是否认q些更改。现在您能够看C个可用的新项目:C ?C++?</p> <div id="bzllfvb" class=ibm-alternate-rule> <hr> </div> <p class="ibm-ind-link ibm-back-to-top"><a class=ibm-anchor-up-link ><font color=#4c6e94><strong>回页?/strong></font></a></p> <p><a name=N100E5><span id="tjtnfnl" class=atitle><strong><font size=5>创徏新项?/font></strong></span></a></p> <p>?Eclipse 中安?CDT 之后Q浏览至 <strong>File => New => Project</strong>Q在那里Q您发C个新的可用项目类型:CQ?#8220;Standard C Make Project”Q、C++Q?#8220;Standard C++ Make Project”Q和“Convert to C or C++ Projects”。从“Standard Make C++ Project”开始,为您的项目创建源代码文g。在 C/C++ Projects 视图中,单击鼠标右键Q然后选择 <strong>New => Simple => File</strong>。命名您的文件ƈ保存它。您可能会用q种Ҏ创徏许多头文件以?C/C++ 实现代码文g。最后当然是 MakefileQGNU Make 用它来构Zq制文g。对?Makefile 使用常见?GNU make 语法Q请参阅 <a ><u><font color=#4c6e94>参考资?/font></u></a>Q。请CQMakefile 要求您?Tab 字符而不是空格来产生~进行?</p> <p>您通常会将现有的源代码导入 EclipseQ请参阅?2Q。CDT 为执行这一操作提供了一U便LҎQ即使用 Import 向导Q将文g从文件系l目录复制到工作台。{至主菜单栏,选择 <strong>File => Import => File System</strong>。单?<strong>Next</strong>Q打开源目录,选择您想要添加文件的目录。单?<strong>Select All</strong> 以选择目录中的所有资源,然后从头到尾查,取消选择您不打算d的那些资源。指定将作ؓ导入目标的工作台目或文件夹。还可以通过从文件系l拖动文件夹和文件ƈ它们放?Navigator 视图中,或者通过复制和粘贴来导入文g夹和文g?</p> <br><a name=N10106><strong><font size=2 face=Arial>?2. 现有的源代码导?CDT 目</font></strong></a><br><font size=2 face=Arial><img alt="?2. 现有的源代码导?CDT 目" src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/importing.jpg" width=462 height=480></font> <br> <div id="dtvxbhn" class=ibm-alternate-rule> <hr> </div> <p class="ibm-ind-link ibm-back-to-top"><a class=ibm-anchor-up-link ><font color=#4c6e94><strong>回页?/strong></font></a></p> <p><a name=N10115><span id="zzjnnll" class=atitle><strong><font size=5>关键?CDT IDE 功能</font></strong></span></a></p> <p>CDT IDE 是在 CDT UI 插g所提供的通用可扩展编辑器基础上构建的。然而,该模块仍处于开发阶D,所以它仍缺一些重要的实用E序Q如cL览器或语a文档览器。CDT IDE 的主要功能是Q?/p> <ul> <li><strong>语法H出昄</strong>QCDT IDE 识别 C/C++ 语法Qƈ法突出显C提供了完全可配|的代码着色以及代码格式化功能Q?</li> </ul> <br><a name=N10129><strong><font size=2 face=Arial>?3. 不成功的~译之后H出昄的语法错误标?/font></strong></a><br><font size=2 face=Arial><img alt="?3. 不成功的~译之后H出昄的语法错误标? src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/error.jpg" width=580 height=418></font> <br> <ul> <li><strong>提纲</strong>QOutline H口模块提供了有兛_现在源代码中的过E、变量、声明以及函数的快速视图。利?outlineQ您可以方便地找到源代码中的适当引用Q或者甚x索所有项目源代码? <li><strong>代码辅助</strong>Q这个代码完成功能类g可在 Borland C++ Builder ?MS Visual Studio 中找到的功能。它使用?<em>代码模板</em>Qƈ且只有助于避免愚蠢的语法错误Q?</li> </ul> <br><a name=N1014D><strong><font size=2 face=Arial>?4. 有助于用正的语言语法的代码辅助功?/font></strong></a><br><font size=2 face=Arial><img alt="?4. 有助于用正的语言语法的代码辅助功? src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/assist.jpg" width=580 height=301></font> <br> <ul> <li><strong>代码模板</strong>Q由代码辅助功能使用的代码模板是标准 C/C++ 语言语法l构的定义。您也可以定义自q代码模板来扩展您自己的快捷键Q如用于 <code>author</code> ?<code>date</code> 关键字的快捷键。在 <strong>Window => Preferences => C/C++ => Code Templates</strong> 中,可以d新模板ƈ查看完整的模板列表。也可以模板作?XML 文g导出和导入?</li> </ul> <p><a name=figure5><strong>?5. 预定义的 C/C++ 代码模板</strong> </a><br><img alt="?5. 预定义的 C/C++ 代码模板" src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/templates.jpg" width=580 height=434> </p> <ul> <li><strong>代码历史记录</strong>Q即使您没有使用 CVS 或其它源代码版本理软gQ也可以跟踪目源代码中的本地更攏V在选择的文件上单击鼠标右键Q从上下文菜单选择 <strong>Compare With => Local History...</strong>Q?</li> </ul> <br><a name=N10192><strong><font size=2 face=Arial>?6. ?Local History 功能查源代码中的更改</font></strong></a><br><font size=2 face=Arial><img alt="?6. ?Local History 功能查源代码中的更改" src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/local-history.jpg" width=580 height=430></font> <br> <div id="vdnxrzx" class=ibm-alternate-rule> <hr> </div> <p class="ibm-ind-link ibm-back-to-top"><a class=ibm-anchor-up-link ><font color=#4c6e94><strong>回页?/strong></font></a></p> <p><a name=N101A2><span id="dbfhzzx" class=atitle><strong><font size=5>构徏q运行项?/font></strong></span></a></p> <p>CDT 提供了一U设|项目构建选项的简单方法。CDT 依赖于三?GNU 工具QGCC、GDB ?Make。因此,对用于调试的 GDB 或用于编译的 GCC ?Make 的依赖要求这些应用程序可用于用户惌使用的^台。大多数 LinuxQ通常和类 POSIXQ源代码软g包?autoconf 脚本来检查构建环境,所以您必需q行 <code>configure</code> 命oQ该命o在编译之前创?#8220;Makefile”。CDT 没有提供~辑 autoconf 脚本的方法,所以必需手工~写它们Q然而,您可以配|构建选项以在~译之前调用 <code>configure</code> 命o?</p> <p>如果通过调用 <code>make</code> 命o来构建项目,那么~省讄没问题,但是Q如果用一U更复杂的方法进行构建,则必需?Build Command 文本框中输入适当的命令(例如Q?<code>make -f make_it_all</code> Q。接下来Q在 C/C++ Projects 视图中,选择 <strong>C/C++ project</strong>Q然后单击鼠标右键ƈ选择 <strong>Rebuild Project</strong>。所有来?make、编译器和链接程序的~译消息都被重定向到控制台窗口: </p> <br><a name=N101C6><strong><font size=2 face=Arial>?7. 带编译器输出的控制台H口</font></strong></a><br><font size=2 face=Arial><img alt="?7. 带编译器输出的控制台H口" src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/building.jpg" width=580 height=147></font> <br> <p>~译成功之后Q您或许惌q行您的应用E序。所有用于运行和调试的选项都位于主 Eclipse 菜单?Run 菜单下。然而,必须在早期定义用于运行项目的选项。可以通过转至主菜单(在那里,有用于运行应用程序的不同概要文gQ中?<strong>Run...</strong> 选项来完成这一步;例如Q可以将一个概要文件用于测试目的,而将另一个概要文件用于运行最l版本。另外,可以定义希望要传递给应用E序的参敎ͼ或者可以设|环境变量。其它选项用于讄调试选项Q例如用哪个调试器QGNU GDB ?Cygwin GDBQ。图 8 昄了正在ؓ目创徏q行概要文gQrun profileQ?</p> <br><a name=N101DE><strong><font size=2 face=Arial>?8. 为项目创行概要文?/font></strong></a><br><font size=2 face=Arial><img alt="?8. 为项目创行概要文? src="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/running.jpg" width=580 height=520></font> <br> <p>当进?C/C++ Projects 视图Q选择您的目Q单击鼠标右键ƈ?Build Settings 选项卡上选择 <strong>Properties</strong> 之后Q就可以使用更多的用于构建项目的常用选项。这些选项主要影响因遇到编译错误而构徏停止时所发生的情c?</p> <div id="dbvprff" class=ibm-alternate-rule> <hr> </div> <p class="ibm-ind-link ibm-back-to-top"><a class=ibm-anchor-up-link ><font color=#4c6e94><strong>回页?/strong></font></a></p> <p><a name=N101F4><span id="pvbrbrf" class=atitle><strong><font size=5>调试 C/C++ 目</font></strong></span></a></p> <p>CDT 扩展了标准的 Eclipse Debug 视图Q之具备了调试 C/C++ 代码的功能。Debug 视图允许您在工作C理E序的调试或q行。要开始调试当前项目,只要切换?Debug 视图Q您能够在代码中设|(q在执行q程中随时更改)断点Q监点q跟t变量和寄存器。Debug 视图昄正在调试的每个目标的暂挂U程的堆栈框架。程序中的每个线E都作ؓ树中的一个节点出玎ͼDebug 视图昄正在q行的每个目标的q程?</p> <p>Eclipse 通过 CDT 调试 MIQCDT Debug MIQ插Ӟ其组件之一Q支持与机器接口QMachine InterfaceQMIQ兼容的调试器。但 MI 调试器究竟是什么呢Q通常情况下,?ddd ?xxgdbQ请参阅 <a ><u><font color=#4c6e94>参考资?/font></u></a>以获得链接)之类的第三方 GUI 调试器在实现调试功能旉依赖?GDB 的命令行接口QCommand Line InterfaceQCLIQ。遗憄是,l过证实该接口非怸可靠。GDB/MI 提供了一U新的面向机器的接口Q它非常适合于想要直接解?GDB 输出的程序?</p> </div> </div> </div> <img src ="http://www.shnenglu.com/mtysblog/aggbug/139483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mtysblog/" target="_blank">_飞寒</a> 2011-01-27 19:48 <a href="http://www.shnenglu.com/mtysblog/articles/139483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.h21jc.cn" target="_blank">þerƷѹۿ2</a>| <a href="http://www.engil.cn" target="_blank">˾þô߽av</a>| <a href="http://www.sushaye.cn" target="_blank">99þۺϹƷ</a>| <a href="http://www.iscrip.cn" target="_blank">ձһƷþþþӰԺ</a>| <a href="http://www.hrtravel.cn" target="_blank">ƷŷƬþùŷ</a>| <a href="http://www.1u11.cn" target="_blank">þֻǾƷ66</a>| <a href="http://www.kangle.net.cn" target="_blank">˾þAV</a>| <a href="http://www.tmsystem888.cn" target="_blank">þŷ޹ۺ</a>| <a href="http://www.e-bizcard.cn" target="_blank">þþƷAAƬһ </a>| <a href="http://www.aipmusic.cn" target="_blank">þĻƵ</a>| <a href="http://www.njw2008.cn" target="_blank">þAAAƬ69</a>| <a href="http://www.vqcj.cn" target="_blank">˾Ʒþһav</a>| <a href="http://www.vqzt.cn" target="_blank">ݺɫþۺ_</a>| <a href="http://www.buzzbee.com.cn" target="_blank">Ʒһþ</a>| <a href="http://www.drlf.net.cn" target="_blank">޾ƷNVþþþþþþþ </a>| <a href="http://www.royfq.cn" target="_blank">þþ뾫Ʒҹ</a>| <a href="http://www.showfans.com.cn" target="_blank">þ޾Ʒ˳ۺ</a>| <a href="http://www.ggjkb.cn" target="_blank">þ޹Ʒ123</a>| <a href="http://www.voos.org.cn" target="_blank">Ʒһþ㽶߿</a>| <a href="http://www.iysb.cn" target="_blank">þþþþԻAV</a>| <a href="http://www.wzyuan25.cn" target="_blank">þø߳һëƬ</a>| <a href="http://www.tnbzjrzhl.cn" target="_blank">Aݺݾþɫ</a>| <a href="http://www.ofuax.cn" target="_blank">ҹþþþþ</a>| <a href="http://www.2nder.cn" target="_blank">޾Ʒtvþþþþþþþ</a>| <a href="http://www.my1983.cn" target="_blank">һþþþþþ</a>| <a href="http://www.biancheng88.cn" target="_blank">Ʒ999þþþþĻ</a>| <a href="http://www.foxconm.cn" target="_blank">þþþþþòҰ¸߳</a>| <a href="http://www.ttzhan.cn" target="_blank">Ůþþþþ</a>| <a href="http://www.bxauomc.cn" target="_blank">þþþֻоƷ</a>| <a href="http://www.meloful.cn" target="_blank">þ99Ʒþþþþ</a>| <a href="http://www.e9ir544.cn" target="_blank">ŷ㽶þۺվ</a>| <a href="http://www.z718.cn" target="_blank">ƷþþþþĻ</a>| <a href="http://www.scmyff.cn" target="_blank">þѾƷav</a>| <a href="http://www.xsubmitter.cn" target="_blank">޾Ʒרþþ</a>| <a href="http://www.ruan8.cn" target="_blank">ڸþþþþ</a>| <a href="http://www.17714.com.cn" target="_blank">AVһþ</a>| <a href="http://www.cpser.cn" target="_blank">þ붯aëƬ</a>| <a href="http://www.zkduo.cn" target="_blank">69Ʒþþþþ޾Ʒ</a>| <a href="http://www.zenavo.cn" target="_blank">þҹҹݺ2022 </a>| <a href="http://www.sensor17.cn" target="_blank">Ʒ˾þ˵Ӱ</a>| <a href="http://www.soba30.cn" target="_blank">þùۺϾƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>