如果我想在调用例程中内联子例程,我可以在哪里保留它?需要它在同一个模块或文件中吗?可以使用来自不同目标文件的子程序完成内联吗?可能答案是编译器依赖的吗?
答案 0 :(得分:2)
这不受Fortran标准的控制。处理器可以按照自己的意愿行事。
肯定取决于编译器设置。
通常,内联函数将被内联。但是许多其他函数也经常被内联,至少如果它们碰巧在同一个源文件或模块中。
但即使从其他源文件/编译对象文件内联也不是不可能的。这可以并且通常在链接时优化(https://gcc.gnu.org/wiki/LinkTimeOptimization)期间完成。这些优化包含在某些编译器标志中(如-fast
),或者可以单独启用(-flto
,-ipo
)。