首先我们要直到C++程序运行需要进行的四个阶段。
预处理->编译->汇编->链接
编译:对语法语义分析,分析无误生成汇编,头文件不参加编译,多个源文件是分开单独编译的。
链接:将多个obj文件链接合成一个,并处理没有解决的地址问题。
如果我们模板声明和定义分离会报一个链接的错误
在test.cpp中add(1,2)会调用add<int>,但是a.cpp中编译器没有看到对add<int>的调用,就不会实例化出一份代码。
所以在链接时会去寻找被实例化的代码,就会报链接的错误。
首先我们要直到C++程序运行需要进行的四个阶段。
预处理->编译->汇编->链接
编译:对语法语义分析,分析无误生成汇编,头文件不参加编译,多个源文件是分开单独编译的。
链接:将多个obj文件链接合成一个,并处理没有解决的地址问题。
如果我们模板声明和定义分离会报一个链接的错误
在test.cpp中add(1,2)会调用add<int>,但是a.cpp中编译器没有看到对add<int>的调用,就不会实例化出一份代码。
所以在链接时会去寻找被实例化的代码,就会报链接的错误。