我不知道这是否适合这样的事情,但我很好奇GCC前端/后端架构的几个方面:
.o
文件并将它们链接到C ++代码,我想我也可以反过来这样做。这是否有效,因为两种语言相似,或者因为GCC后端真的与语言无关?这也适用于ADA代码吗? (我甚至不知道这是否有意义,因为我不知道ADA或者它是否具有“功能”,但问题是理解的。如果没有意义,请考虑“Pascal”甚至“我自己的习惯”语言前端“)答案 0 :(得分:1)
答案 1 :(得分:0)
因为调用约定是兼容的,但名称修改是不同的(C中没有修改)。要从C ++调用C函数,您应该使用extern "C"
声明它。要从C调用C ++函数,您应该使用错位名称声明它(并且可以使用其他类型的args)。在某些情况下调用Fortran代码也是可能的,但参数传递约定是不同的(在Fortran中通过ref传递)。
实际上有一个从C ++到C(cfront)和从fortran到c(f2c)的转换器,仍然使用它们的一些解决方案。
垃圾收集在运行时库中实现,例如贝姆。后端应生成与所选GC库兼容的对象。
编译器驱动程序(g ++,gfortran,..)将为链接步骤添加特定于语言的库。