ナビゲーション:前へ 上へ 次へ
2.15 未定義変数の検出
未定義変数の使用は-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(*)変数では使えません。