FORTRAN サブルーチン呼び出しで、実引数の型が対応する仮引数の型と一致しません。
呼び出しがコンパイルされるときに、呼び出されたルーチンにオプション・パラメーターがあることを示すインターフェイスを利用できることがあります。実引数の数が仮引数よりも少ない場合、コンパイラーは不足分の仮引数に NULL ポインターの逆参照を渡します。呼び出されるプロシージャーの実際の定義がインターフェイスと一致しない場合、この方法では非オプション仮引数に NULL ポインターの逆参照が渡されてしまいます。これは通常、NULL ポインターの逆参照エラーになります。
この場合、呼び出しは仮引数を通して参照されるサブルーチンにより行われ、仮引数宣言にあるインターフェイスが問題となります。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
定義 |
関数が定義された場所 |
2 |
呼び出し位置 |
関数が呼び出された場所 |
subroutine mysub(j) integer :: j ! note: dummy argument is not optional print *,j end subroutine icallyou(f) interface subroutine f(j) integer, optional :: j end subroutine f end interface integer :: m read *, m call f(m) call f() ! error here when f refers to mysub end program test interface subroutine mysub(j) integer, optional :: j end subroutine mysub end interface call icallyou(mysub) end
© 2010 Intel Corporation. 無断での引用、転載を禁じます。