2013-01-07 48 views
6

在D中构建(编译和链接)源代码的过程与C/C++的不同之处在于,与内联函数,D的模块系统(而不是头)和构建工具有关。在D中如何重用模板实例化?D构建过程

+1

我会想象在D中重用模板实例的方式与在C++ 11中使用extern模板非常相似。这就是我可以为这个讨论做出贡献的一切。 –

+0

我相信在一个多文件编译中,模板实例化只能完成一次,然后存储在一个生成的目标文件中。但我不确定写一个答案。当以这种方式编译时,内联函数总是跨越模块边界,就像在C++中使用链接时代码生成一样。恕我直言! – ponce

+0

@ponce没有链接时间代码gen目前只有一些优化 –

回答

2

它不相差太大,每个模块被编译到其然后被连接在一起的其自身的物镜文件,该文件IIRC不是从C/C++的过程,不同

的主要区别在于然而,所述进口象征而不是C的整个文件#include其无需headerfiles(尽管headerlike .di文件的选项是有封闭源代码的API)

模板确实需要包括在提供的有关文件编译器虽然(就像它们需要在C++的头文件中一样)