14

関数の操作方法を学ぼうとしています。次のコードがあります。

program main
  implicit none

  write(*,*) test(4)
end program

integer function test(n)
  implicit none
  integer, intent(in) :: n
  integer :: i, ans

  ans=1
  do i=1,n
  ans=ans*i
  enddo

  test=ans
end function test

(gfortran 4.1.2 で) コンパイルすると、次のエラーが発生します。

In file test.f90:4

  write(*,*) test(4)
           1
Error: Function 'test' at (1) has no IMPLICIT type
4

4 に答える 4

19

行を移動する

end program

ソースファイルの最後に追加し、その場所に次の行を書き込みます

contains

あなたがプログラムを書いたので、関数の知識がありませtestん。これは、コンパイラーがあなたに伝えていることです。プログラムに必要な知識を提供する方法の 1 つを提案しましたが、他にも方法があります。あなたは学習者なので、何が起こっているのかを詳しく理解するためにあなたに任せます。

于 2013-07-19T17:54:16.623 に答える
3

これを置くだけです:

program main
  implicit none

整数テスト

  write(*,*) test(4)
end program
...

コンパイラが関数の戻り値の型を知るには、関数を変数として宣言する必要があります。

于 2015-05-07T03:33:41.897 に答える