ナビゲーション:前へ 上へ 次へ
2.16 未定義変数の検出
未定義変数の使用は-C=undefined オプションを用いることに よって検出できます。 ただしこのオプションを指定してコンパイルされたプログラムは異なるABIを利用します。 そのため、このオプションを指定しないでコンパイルされたものと整合性がなく、 またCとの相互運用性もありません(すなわちFortranコードでなければならず全体をとおして同じようにコンパイルしなければなりません。) この理由から、-C=undefined は-C または -C=all の一部にはなっていません。
現状、-C=undefined の使用には他にも種々の制約があります。
-
初期化された
COMMON
中のポインタとは整合性がありません。 -
全ての組込モジュールが利用可能です。しかしながら
ISO_C_BINDING
モジュールはすべてがFortranのプログラムからのみ利用可能です。 (このオプションがABIの変更を行うから) -
CHARACTER
配列からの内部的なREAD
に際しては、該当要素が実際には 読まれないにしても、指定された配列サブオブジェクト全体が“定義”されている 必要があります。 -
CHARACTER
配列への内部的なWRITE
は、該当要素が実際には書かれない にしても、指定された配列サブオブジェクト全体を規定するものとします。 -
ある種の組込み関数は、たとえその一部が関数の値にとって必要ないにしても、引数
が完全な形で定義されている必要があります。例としては、パディングが必要ないケ
ースでの
RESHAPE
に対するPAD
引数、あるいはPACK
に対するARRAY
引数の要素でMASK
の偽要素に対応するものがあげられます。 - 共配列の使用とは互換性がありません。
- 長さ型パラメタを持つ型では使えません。
-
MOLD=
指定子で割り付けられたCLASS(*)
変数では使えません。 -
SOURCE=
式がCLASS(*)
の仮引数であり、実引数が定数である場合、ALLOCATE
とともに使用することはできません。