-
您现在的位置:网络学院 > 开发特区 > 开发语言 > C++Builder
C++对模板的分离式编译问题的解答

出处:PConline
责任编辑:ljx

[03-10-27 15:55] 作者:pongba/CSDN
-
  这就是大概的过程。其中关键就是:

  编译main.cpp时,编译器不知道f的实现,所有当碰到对它的调用时只是给出一个指示,指示连接器应该为它寻找f的实现体。这也就是说main.obj中没有关于f的任何一行二进制代码。

  编译test.cpp时,编译器找到了f的实现。于是乎f的实现[二进制代码]出现在test.obj里。

  连接时,连接器在test.obj中找到f的实现代码[二进制]的地址[通过符号导出表]。然后将main.obj中悬而未决的call XXX地址改成f实际的地址。

  完成。

  然而,对于模板,你知道,模板函数的代码其实并不能直接编译成二进制代码,其中要有一个“具现化”的过程。举个例子:

  //----------main.cpp------//

  template

  void f(T t)

   {}

  int main()

  {

   …//do something

   f(10); //call f 编译器在这里决定给f一个f的具现体

   …//do other thing

   }

ad
发给好友 投稿给我们 加入收藏 返回顶部

相关文章:
VC++实现拨号上网程序详解
利用C++Builder让软件字幕动起来
微软推出嵌入式Visual C++ 4.0 SP2
IT培训十大热门文章
·学好VC++的十大良好习惯
·传奇程序员:Perl的乐趣
·linux入门必读文章
·软件开发高手是这样炼成的
·在职读工程硕士考有变!
·追击热门IT认证:CCIE
·追击热门IT认证:RHCE
·获IT认证后薪水能涨多少?
·IT人必读的优秀书籍集锦
·中专生能进大型IT公司吗?

内容搜索 
高级搜索
本栏今日焦点