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

出处:PConline
责任编辑:ljx

[03-10-27 15:55] 作者:pongba/CSDN
-
  //但是,如果在test.cpp中写一个函数,其中调用A::f,则编译器会将其//具现出来,因为在这个点上[test.cpp中],编译器知道模板的定义,所以能//够具现化,于是,test.obj的符号导出表中就有了A::f这个符号的地址,于是连接器就能够完成任务。

    }

  关键是:在分离式编译的环境下,编译器编译某一个.cpp文件时并不知道另一个.cpp文件的存在,也不会去查找[当遇到未决符号时它会寄希望于连接器]。这种模式在没有模板的情况下运行良好,但遇到模板时就傻眼了,因为模板仅在需要的时候才会具现化出来,所以,当编译器只看到模板的声明时,它不能具现化该模板,只能创建一个具有外部连接的符号并期待连接器能够将符号的地址决议出来。

  然而当实现该模板的.cpp文件中没有用到模板的具现体时,编译器懒得去具现,所以,整个工程的.obj中就找不到一行模板具现体的二进制代码,于是连接器也傻眼了!(CSDN)


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

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

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