好吧,让我先说我为什么要这样做。我经常用 C/C++ 编写代码,所以对我来说定义如下函数是很自然的:
vector<int> TestFunct (int a, int b){
<some code here>
return <result>;}
现在我正在学习 Fortran,所以我声明这样的函数:
function TestFunc(a,b)
integer, dimension(:) :: TestFunc
integer :: a
integer :: b
<some code here>
endfunction TestFunc
但是我最近了解到,结果的数据类型可以在函数语句中定义,比如:<data_type> function TestFunc(a,b)
,这对我来说更自然,因为我习惯了类似的 C++ 声明。
问题是,当我试图将一个向量(实际上是 a integer, dimension(:)
,严格来说)定义为结果数据类型时,我遇到了ifort
错误#5082
(我将在下一行中详细说明)。
在一个示例中,对于代码:
real, dimension(:) function TestFunc(a,b)
integer, intent(in) :: a
integer, intent(in) :: b
<more code here>
endfunction Testfunc
我得到输出:
main.f90(23): error #5082: Syntax error, found ',' when expecting one of: ( * ) ( :: %FILL , TYPE INTEGER REAL COMPLEX BYTE CHARACTER CLASS DOUBLE ...
real, dimension(:) function TestFunc(a, b)
----^
main.f90(23): error #5082: Syntax error, found IDENTIFIER 'FUNCTION' when expecting one of: * :: , <END-OF-STATEMENT> ; [ / = => WITH
real, dimension(:,:) function TestFunc(a, b)
---------------------^
希望我已经清楚地解释了我的问题。
编辑:所以,为了总结我刚才在一个问题中所说的话:我如何integer, dimension(:)
在函数语句中声明一个向量(即:)作为返回数据类型?