Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在函数中声明变量(Fortran)_Fortran_Gfortran - Fatal编程技术网

在函数中声明变量(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

我正在尝试用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 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语句我已编辑了我的答案以包含一个示例。基本上,主程序语句应该位于
包含的
块之前。