Fortran 从具有备用项的函数返回值
当函数具有备用条目时,是否需要为条目名称设置返回值,或者如果未设置备用名称,主名称是否始终有效?比如说,Fortran 从具有备用项的函数返回值,fortran,Fortran,当函数具有备用条目时,是否需要为条目名称设置返回值,或者如果未设置备用名称,主名称是否始终有效?比如说, INTEGER FUNCTION MYFUNC( ARG ) INTEGER ARG INTEGER MYFUNC2 C ... do something here... GOTO 100 ENTRY MYFUNC2( ARG ) C ... do something else her
INTEGER FUNCTION MYFUNC( ARG )
INTEGER ARG
INTEGER MYFUNC2
C ... do something here...
GOTO 100
ENTRY MYFUNC2( ARG )
C ... do something else here
100 CONTINUE
MYFUNC = <some value>
C .. is the next line needed, of can it be omitted?
myfunc2 = myfunc
RETURN
END
整数函数MYFUNC(ARG)
整数参数
整数MYFUNC2
C在这里做点什么。。。
转到100
条目MYFUNC2(ARG)
C在这里做点别的
100继续
MYFUNC=
C是否需要下一行,是否可以省略?
myfunc2=myfunc
返回
结束
引用Fortran 2008标准第12.6.2.6条入口声明:
[……]
3如果ENTRY语句位于函数子程序中,则附加
函数由该子程序定义。函数的名称为
条目名称及其结果变量的名称为result name或is
如果未提供结果名称,则输入名称。
[...]
如果
ENTRY语句中命名的函数与
函数中命名的函数的结果的特征
语句中,它们的结果变量标识相同的变量,但
它们的名称不必相同。否则,它们就是存储器
关联的和应全部为非指针式、不可分配的标量
是默认整数、默认实数、双精度实数、默认值
复杂,或默认逻辑
我读这段突出显示的文章的方式是
myfunc2 = myfunc
确实不需要,因为MYFUNC
和MYFUNC2
都是相同类型的标量整数
由于function语句和entry语句均未指定任何
result
,因此函数名将变为结果名。这在第12.6.2.2条功能子程序中有规定
[……]
4如果出现结果,则函数的结果变量的名称
是结果名和函数名在中的所有引用
其作用域中的执行部分语句引用函数本身。
如果结果未出现,则结果变量的名称为
函数名以及函数名在
其作用域中的执行部分语句是对结果的引用
变量[……]
这个答案中唯一缺少的是:“不要使用
entry
语句”。