2

次のコードは、Linuxシステムでpgf90を使用してコンパイルするとセグメンテーションエラーが発生しますが、WindowsでIntelVisualFORTRANを使用すると正常に実行されます。

program main 
implicit none 
integer:: a(3), b(3) ,c(3)
a=[3, 4, 5]
b=[1, 2, 3]
call sub(a,b,c)
write(*,*)'a+b = ',c 
end program main

subroutine sub(a,b,c) 
implicit none 
integer, intent(in)::a(:),b(:)
integer, intent(out)::c(:)
c=a+b
end subroutine sub 

これについて何か説明はありますか?

4

2 に答える 2

4

(このプログラムの場合のように)形状ダミー引数を想定したサブルーチンを呼び出す場合は、明示的なインターフェースが必要です。これを実現する最も簡単な方法は、サブルーチンをモジュールに入れ、そのモジュールをメインプログラムで使用することです。

于 2012-02-24T23:02:50.460 に答える
1

特に配列の宣言と初期化の方法では、標準のFortran90構文を使用すると役立つ場合があります。

 program main 
 implicit none 
 integer, dimension(3):: a, b ,c
 a=(/3, 4, 5/)
 b=(/1, 2, 3 /)
 call sub(a,b,c)
 write(*,*)'a+b = ',c 
 end program main
于 2012-09-06T19:11:10.693 に答える