Sun Studio 12:Fortran 用户指南

3.4.169 –xrecursive

允许不带 RECURSIVE 属性的例程以递归方式调用它们自己。

通常,只有使用 RECURSIVE 属性定义的子程序才能以递归方式调用它们自己。

使用 -xrecursive 进行编译使得子程序可以调用它们自己,即使它们没有使用 RECURSIVE 属性进行定义也是如此。但是,与定义了 RECURSIVE 的子例程不同,缺省情况下,使用此标志不会导致在栈上分配局部变量。要使局部变量在子程序的每个递归调用中具有不同的值,还应该使用 -stackvar 进行编译以便将局部变量放在栈上。

间接递归(例程 A 调用例程 B,而例程 B 又调用例程 A)可在高于 -xO2 的优化级别上生成不一致的结果。使用 -xrecursive 标志进行编译,可以保证使用间接递归的正确性,即使优化级别更高也是如此。

使用 -xrecursive 进行编译会导致性能下降。