C++ D构建过程

C++ D构建过程,c++,c,compilation,linker,d,C++,C,Compilation,Linker,D,在D中构建(编译和链接)源代码的过程与C/C++有何不同,特别是在内联函数、D的模块系统(而不是标头)和构建工具方面。模板实例化如何在D中重用?差别不大,每个模块被编译成自己的obj文件,然后链接到一起,IIRC与C/C++过程没有什么不同 然而,主要的区别在于导入是符号化的,而不是C的整个文件#include,这就消除了对HeaderFile的需要(尽管对于封闭源API,有headerlike.di文件的选项) 模板确实需要包含在编译器可用的文件中(就像它们需要包含在C++的头文件中一样)我可

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

差别不大,每个模块被编译成自己的obj文件,然后链接到一起,IIRC与C/C++过程没有什么不同

然而,主要的区别在于导入是符号化的,而不是C的整个文件
#include
,这就消除了对HeaderFile的需要(尽管对于封闭源API,有headerlike.di文件的选项)


模板确实需要包含在编译器可用的文件中(就像它们需要包含在C++的头文件中一样)

我可以想象模板实例化在D中的重用方式与外部模板在C++11中的工作方式非常相似。我相信在多文件编译中,模板实例化只执行一次,然后存储在一个生成的对象文件中。但我不太确定是否可以写一个答案。在编译这种方式时,内联函数总是跨模块边界,就像在C++中使用链接时间代码生成那样。伊姆霍@ponce目前没有链接时代码生成器,只有一些优化问题:我们是否应该始终单独编译项目中的所有.d文件,即使是仅包含模板的模块?