模板库编译太慢时

我们当到一个模板库,一般的用法是把它包含到我们的cpp文件中来。假如你的工程中有n个cpp,而每个cpp都需要调用此模板中的同一个函数,并且是对同一种类型。那么在你的工程编译的时候就需要对此模板库编译n次,如果不幸的是这个模板库非常的大,那么你的编译速度将很慢,即使在VC中将此模板库加在stdafx.h中也没有用,因为模板的滞后编译机制使得预编译没有什么效果。  
      我曾经就经历过这种痛苦。那是我当到了boost,需要使用它里面的bgl。并且我得工程中有20多个文件,而且几乎每个文件都需要包含bgl中的一些头文件,编译速度的那个慢呀……。  
      后来我发现可以将模板函数前向声明一下,将这些声明做成一个小小的头文件bgl.h。然后在我得工程中在加入一个bgl.cpp,此cpp中声明一个永远不会调用的函数,这个函数用我工程中的类型将bgl中的所有函数调用一遍,这样bgl.cpp的目标文件中将产生我需要的函数实体。当然bgl.cpp需要包含bgl所有的头文件,但是其它的cpp将只需要包含简单的bgl.h了。这样我的工程除了bgl.cpp编译很慢之外,其它的cpp就编译如飞了。  
        后来我看到bgl.h中的声明是模板的声明,既然我用的类型已经固定,那么我是否可以将此声明更改为普通的函数声明,结果在VC下一切OK,但是在dev   c++中连接的时候出错,原来两个编译器对模板函数生成的函数名处理不同。  
        这个帖子只是我的一个经验,欢迎其它对模板的使用有经验的人来讨论!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值