インターフェイスの不一致

FORTRAN サブルーチン呼び出しで、非オプション仮引数に null 値が渡されています。

呼び出しがコンパイルされるときに、呼び出されたルーチンにオプション・パラメーターがあることを示すインターフェイスを利用できることがあります。実引数の数が仮引数よりも少ない場合、コンパイラーは不足分の仮引数に NULL ポインターの逆参照を渡します。呼び出されるプロシージャーの実際の定義がインターフェイスと一致しない場合、この方法では非オプション仮引数に NULL ポインターの逆参照が渡されてしまいます。これは通常、NULL ポインターの逆参照エラーになります。

ID

問題箇所

説明

1

定義

関数が定義された場所

2

呼び出し位置

関数が呼び出された場所

          
subroutine mysub(j)
integer :: j
print *,j
end

interface
subroutine mysub(j)
integer, optional :: j
end subroutine mysub    
end interface

integer :: m
read *, m
call mysub(m)
call mysub() ! error here: interface says argument is optional when it isn't
end
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。