代码改变世界

关于visual studio模板编译问题的若干可行方案

2010-03-23 11:18  Phoenix'K  阅读(505)  评论(1编辑  收藏  举报

    早就知道vs的缺陷,今天编写模板类的时候算是领教了。昨天搞了一个下午算是把模板编译这个问题搞定了!

    大家都知道,c++支持两种编译模型,包含编译模型和分离编译模型。

    c++ primer里面也提出了这两种编译模型,其实很多时候都觉得这些书为什么就只讲模板,而不讲在编译器的编译问题呢。最多就是一笔带过,c++ primer也是理论上提了一下,加以就一页,而且也不讲讲具体,没给出一个实例,这是比较讨厌c++ primer的一个地方。当然不单单是这本书,很多都没有。

    到目前为止,我还没用到支持分离编译模型的编译器,也不知道Bjarne Stroustrup为什么要提出这一编译模型,到现在也不明白是Bjarne Stroustrup的错还是编译器厂家的错,据说是用分离编译会导致效率降低。也没有去具体的考究。

   现在就具体说说visual studio 2008上的编译模板问题吧!

 

   现在就有两个比较可行的方案解决这个包含编译问题:

   1.就是将类的声明和定义都放在头文件中。这样如果出错了那肯定不是编译模型问题,是你的程序出错了。当然对于失去cpp文件,感官上是不那么爽快。视觉上同样觉得别扭。那么我找到了另外一种解决方案:

   2.将头文件和源文件分开写,但是在主文件中不要#include“xxx.h”,而是包含cpp文件。这样也同样可以成就包含编译。

 

   ps:1.以上的解决方案不包括友元模板类,友元模板类还在继续探索中,不过将声明定义放在头文件中是肯定可行的。已亲测。

    2.vs2010呼之欲出,也不知道它到底给我们这类c++程序员带来什么特性呢。广告倒是不错的,至少vs那个蓝色的图标我很喜欢,今天也终于忍住下载了beta2版本。下载ing。。。