快速业务通道

通过预编译头文件来提高CB的编译速度

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
h>
   #include <iostream.h>         #include <iostream.h>
   #include <windows.h>          #include <windows.h>
   #include "unit1.h"           #include "unit1.h"
   #pragma hdrstop            #pragma hdrstop

示例5:预编译映象匹配

  //--------------------         //--------------------
   // UNIT1.CPP              // UNIT2.CPP
   #define INC_VCLDB_HEADERS       #define INC_VCLDB_HEADERS
   #define INC_VCLEXT_HEADERS      #define INC_VCLEXT_HEADERS
   #include <vcl.h>            #include <vcl.h>
   #pragma hdrstop            #pragma hdrstop
   #include "unit1.h"           #include "unit2.h"

示例6:预编译映象不匹配

  //--------------------         //--------------------
   // UNIT1.CPP              // UNIT2.CPP
   #define INC_VCLDB_HEADERS       #include <vcl.h>
   #define INC_VCLEXT_HEADERS      #pragma hdrstop
   #include <vcl.h>
   #pragma hdrstop

当编译器处理一个预编译映象不匹配的源文件时就会重新再产生一个全新的映象。看上面的示例2。尽管stdio.h在unit1.cpp中已经被编译过了,但是unit2中还是要被编译的。只有在多个文件中都能用到预编译映象编译器才能减少编译的时间。

这就是我所讲到的技术的基础。预编译尽可能多的头文件,并确保在每个源文件中都用到同样的预编译映象。

技术1:

第一个技术只是通过在每个源文件中定义两个条件来增加vcl.h中包含的头文件的数目。打开工程中的每个cpp文件包括工程文件,象下面看到的那样改变它们的头两行。

#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
#include <vcl.h>
#pragma hdrstop

如果你不喜欢这种方法,你可以在Project-Options-Directories/Conditional条件定义栏中填入INC_VCLDB_HEADERS 和 INC+VCLEXT_HEADERS来达到同样的目的。

或许你也想插入一些windows.h之类的你常用的C RTL头文件,要确保插入到hdrstop pragma之前,而且顺序要相同。

#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
#include <vcl.h>
#include <windows.h>
#include <stdio.h>
#pragma hdrstop

技术2:

技术1的效果很好,但它不是很灵活。如果你想要在观感编译的头文件列表中再加入一个新的头文件的话,你要修改你工程中的每一个源文件。此外,技术一容易出错。如果你把包含的顺序弄乱了,你只会更糟而不是更好。

技术二处理了技术一的一些缺点。方法就是创建一个巨大的头文件来包含你工程中用到的所有的头文件。这个头文件将包含有VCL的头文件、window SDK的头文件以及RTL头文件。当然你也可以包含一些创建的窗体的头文件,但稍会你会了解到不应该把一些常修改的文件做预编译处理(查看注意事项:不要预编译变化的头文件)

下面就样一个文件的示例:

//---------------------------------------------------------
// PCH.H: Common header file
#ifndef PCH_H
#define PCH_H
// include every VCL header that we use
// could include vcl.h instead
#include <Buttons.hpp>
#include <Classes.hpp>
#include <ComCtrls.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
#include <Forms.hpp>
#include <Graphics.hpp>
#include <ToolWin.h

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号