使用 nagfor 从函数返回的过程指针
Procedure pointer returned from a function with nagfor
我尝试使用过程指针作为 Fortran 函数的 return。以下最小代码适用于 gfortran(使用 4.8.1 测试)但不适用于 nagfor(NAG 6.0):
function foo() result(f_p)
implicit none
procedure(), pointer :: f_p
f_p => null()
end function foo
nagfor 抱怨:
Error: test.f90, line 5: Multiply defined symbol F_P
detected at ::@F_P
Error: test.f90, line 5: F_P is not a procedure name
detected at F_P@<end-of-statement>
Warning: test.f90, line 7: Result F_P of function FOO has not been assigned a value
[NAG Fortran Compiler pass 1 error termination, 2 errors, 1 warning]
这是为什么?
注意:我非常清楚以这种方式使用过程指针时内存泄漏的危险。
我在 NAG Fortran 编译器上工作,我可以确认它还没有实现这个 Fortran 2003 特性(函数返回过程指针)。
对该功能的支持暂定为下一个 (6.1) 版本。
我尝试使用过程指针作为 Fortran 函数的 return。以下最小代码适用于 gfortran(使用 4.8.1 测试)但不适用于 nagfor(NAG 6.0):
function foo() result(f_p)
implicit none
procedure(), pointer :: f_p
f_p => null()
end function foo
nagfor 抱怨:
Error: test.f90, line 5: Multiply defined symbol F_P
detected at ::@F_P
Error: test.f90, line 5: F_P is not a procedure name
detected at F_P@<end-of-statement>
Warning: test.f90, line 7: Result F_P of function FOO has not been assigned a value
[NAG Fortran Compiler pass 1 error termination, 2 errors, 1 warning]
这是为什么?
注意:我非常清楚以这种方式使用过程指针时内存泄漏的危险。
我在 NAG Fortran 编译器上工作,我可以确认它还没有实现这个 Fortran 2003 特性(函数返回过程指针)。 对该功能的支持暂定为下一个 (6.1) 版本。