(1).使用C++模板时,编译器(例如g ++)不能直接编译模板定义(只能在头文件而不是源文件中)是正确的,而是根据每个实例的模板定义生成代码,然后为其实例化编译生成的代码?
(2).如果我想编写一个提供模板类和模板函数的C++库,是不可能将库编译成共享文件(.so,.a),因为它们的实例化不会出现在库的代码中的任何地方,而只会出现在用户的程序?如果是,是否意味着模板库只是源代码文件而不是预编译文件?
如何实现C++标准模板库(STL)?它的源代码是否与用户程序一起预编译或编译?
(3).在C中,
如何在C++中编写一个提供类似模板函数的函数的库?重载是一个很好的解决方案吗?
如果我必须为不同类型的参数将一个过程写入不同的函数,那么代码重用是否有好的方法?这是一个很好的方法来做到这一点http://www.vlfeat.org/api/imop_8c_source.html?还有其他方法吗?
感谢致敬!
Ale*_*min 13
使用C++模板时,编译器(例如g ++)是否会编译模板定义是正确的.
是.这是一个正确的假设.
模板定义是不完整的代码.您需要在编译之前填写模板参数.
如果我想编写一个提供模板类和模板函数的C++库,是不可能将库编译成共享文件(.so,.a)
不,这是不可能的.您只能编译模板的单个实例.
如何实现C++标准模板库(STL)?它的源代码是否与用户程序一起预编译或编译?
STL代码的很大一部分驻留在头文件中,并与您的应用程序一起编译.
在C中,如何在C++中编写一个提供类似模板函数的函数的库?这是一个很好的方法来做到这一点 http://www.vlfeat.org/api/imop_8c_source.html?还有其他方法吗?
在重新定义宏之后多次包含相同的文件(如您提供的链接中所示)是一种很好的方法.