C 汇编如何处理共享库和模板
How C++ compilation handles shared library and template
我曾经读过C 基本上根据编译时间使用的用法列举所有可能的模板类型的地方,因此在运行时不存在模板的概念。看来,这就是所接受的答案是从模板汇编
的我的问题是,如果是这种情况,STL如何处理自定义类型,当所有内容都已编译和完成时,如何处理自定义类型?这可以更广泛地适用于使用模板编译的任何自定义库。
(我本可以在答案的评论中问这个,但我没有足够的积分(
如果图书馆想要提供其客户可以使用任意类型实例化的模板,则必须在标题文件中提供模板的完整定义。这就是为什么许多C 库(包括Boost的大部分(都是仅标题的原因。然后,编译器可以访问模板的定义,并可以将其与客户端提供的任何类型/值实例化。
有关该主题的详细处理,请参阅堆栈溢出问题,为什么仅在标题文件中实现模板?
请注意,这仅当我说的是旨在与任意类型一起使用的模板时适用。如果一组实例是有限的,可以在构建共享库时确定,则可以对所有需要支持的模板参数组合的所有模板创建明确的实例化。然后,不需要公开模板的定义,但是当然,不可能在客户端代码中使用不同类型的模板实例化模板。
为此,有一些几何库将其定义作为模板提供,以便它们可以与float
和double
同时使用以表示浮点数,但不要公开模板定义。他们只是将所有代码与float
和double
预先启动。然后,客户可以使用这些实例,但不能将它们用于Exmaple long double
或MyCustomFloat
。
相关文章:
- 模板函数如何处理可能共享一个交集的多个类型名称?
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 使用共享库进行变体处理是个好主意吗?
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 使用 CMake 和 C++ 处理共享库依赖项
- 如何处理加载错误的共享库版本的情况
- 使用共享变量进行线程处理
- C 汇编如何处理共享库和模板
- 处理共享_ptr时非初始化的价值
- 使用 Git 如何处理在不同修订版共享相同代码的C++项目?
- 共享指针矢量的自动创建和处理
- Dokan:我应该自己处理文件共享和访问权限吗?
- 最佳现代C 处理std ::共享_ptr的阵列
- 不同处理方法的设计模式,这些方法共享一些常见的处理链
- 在 c++ 中实现共享指针时如何处理常量对象
- C++11 使用共享对象的多线程处理
- 链接器如何处理链接到共享库的C++静态库的唯一typeinfo约束
- OpenMP共享文件处理程序
- 如何在不使代码庞大的情况下处理共享/弱ptr ?
- MFC文档模板中的共享处理程序预处理器指令