将子例程/函数放入内联

时间:2017-01-07 20:10:34

标签: fortran fortran90 gfortran

如果我想在调用例程中内联子例程,我可以在哪里保留它?需要它在同一个模块或文件中吗?可以使用来自不同目标文件的子程序完成内联吗?可能答案是编译器依赖的吗?

1 个答案:

答案 0 :(得分:2)

这不受Fortran标准的控制。处理器可以按照自己的意愿行事。

肯定取决于编译器设置。

通常,内联函数将被内联。但是许多其他函数也经常被内联,至少如果它们碰巧在同一个源文件或模块中。

但即使从其他源文件/编译对象文件内联也不是不可能的。这可以并且通常在链接时优化(https://gcc.gnu.org/wiki/LinkTimeOptimization)期间完成。这些优化包含在某些编译器标志中(如-fast),或者可以单独启用(-flto-ipo)。