在函数中声明变量(Fortran)
我正在尝试用Fortran编写一个非常简单的函数(首次用户): 我犯了很多错误:在函数中声明变量(Fortran),fortran,gfortran,Fortran,Gfortran,我正在尝试用Fortran编写一个非常简单的函数(首次用户): 我犯了很多错误: integer function k(n) 1 Error: Syntax error in data declaration at (1) integer, intent(in) :: n 1 Error: Unexpected data declaration statement at (1) end fun
integer function k(n)
1
Error: Syntax error in data declaration at (1)
integer, intent(in) :: n
1
Error: Unexpected data declaration statement at (1)
end function k
1
Error: Expecting END PROGRAM statement at (1)
k=n
1
Error: Symbol ‘k’ at (1) has no IMPLICIT type
k=n
1
Error: Symbol ‘n’ at (1) has no IMPLICIT type
我做错了什么?我使用的是gfortran的最新版本。任何声明的函数和程序块本地子例程都应该放在
contains
语句之后,例如
program Main
implicit none
contains
integer function k(n)
integer, intent(in) :: n
k=n
end function k
end program Main
要给出一个使用此函数的程序示例,您可以
program Main
implicit none
integer :: myLocalN
myLocalN = 2
print*, "My local N is ", myLocalN
print*, "The value of this squared is", sq(myLocalN)
contains
integer function sq(n)
integer, intent(in) :: n
sq=n*n
end function sq
end program Main
例如,程序块本地的任何声明函数和子例程都应放在
包含的语句之后
program Main
implicit none
contains
integer function k(n)
integer, intent(in) :: n
k=n
end function k
end program Main
要给出一个使用此函数的程序示例,您可以
program Main
implicit none
integer :: myLocalN
myLocalN = 2
print*, "My local N is ", myLocalN
print*, "The value of this squared is", sq(myLocalN)
contains
integer function sq(n)
integer, intent(in) :: n
sq=n*n
end function sq
end program Main
您能否提供一些关于您是如何编译的详细信息,以及您使用的编译器的确切版本(最新版本可能意味着许多不同的东西)等等?我猜您需要执行gfortran-c file.f90
而不是gfortran file.f90
,或者您应该提供一个.I正在使用gfortran file.f90。我现在也尝试添加-c,但没有效果。我的编译器是gfortran 6.1。El Capitan.你的文件是否只包含你在问题中所写的内容,还是还有更多?如果还有更多,你可以提供(或者是它的一个最小版本),因为我可以毫无问题地编译上面的内容::n k=n end function k end program main您能否提供一些有关您是如何编译的详细信息,以及您使用的编译器的确切版本(最新版本可能意味着许多不同的东西)等?我猜您需要执行gfortran-c file.f90
而不是gfortran file.f90
,或者您应该提供一个.I正在使用gfortran file.f90。我现在也尝试添加-c,但没有效果。我的编译器是gfortran 6.1。El Capitan.你的文件是否只包含你在问题中所写的内容,还是还有更多?如果有更多的,你可以提供(或一个最低版本的),因为我可以编译上面没有问题。这是:程序主隐式非整数函数k(n)integer,意图(in)::n k=n end function k end program Main谢谢!现在如果我想打印,比如说,k(3),我该怎么做?我试图在结束函数k之后添加一个print*,k(3)语句,但我得到了一个错误:在(1)@odnerpocon的CONTAINS部分中出现了意外的WRITE语句我已编辑了我的答案以包含一个示例。基本上,您的主程序语句应该位于包含的块之前。谢谢!现在如果我想打印,比如说,k(3),我该怎么做?我试图在结束函数k之后添加一个print*,k(3)语句,但我得到了一个错误:在(1)@odnerpocon的CONTAINS部分中出现了意外的WRITE语句我已编辑了我的答案以包含一个示例。基本上,主程序语句应该位于包含的块之前。