コンパイラー・オプションの指定

コンパイラー・オプションは、コンパイラー特性の設定、作成するオブジェクト・コードおよびコンパイラー出力の記述、およびある種のプリプロセッサー機能の実行など、広範囲にわたる機能を実行します。 コンパイラー・オプションは、次のいずれかの方法で指定することができます。

ユーザーが上記にリストされた方法で明示的に設定しなかったコンパイラー・オプションについては、コンパイラーはデフォルト設定を使用します。デフォルトは、コンパイラー・デフォルト、インストール・デフォルト、あるいは c89 ユーティリティーまたは xlc ユーティリティーによって設定されたデフォルトのいずれでも構いません。 コンパイラー・デフォルトは、インストール・デフォルトによってオーバーライドされ、インストール・デフォルトは、c89 ユーティリティーまたは xlc ユーティリティーで設定されたデフォルトによってオーバーライドされます。

コンパイラー・オプションを指定する際には、オプションの矛盾や非互換性が生じる可能性があります。 z/OS® XL C/C++ は、この矛盾や非互換性のほとんどを、次のような一貫した方式で解決します。

 Source  overrides    Command   overrides   Configuration    overrides   Default
  file  ----------->   line    ---------->      file        -----------> settings

この方式に従わないオプションを以下の表に要約しています。

表 1. コンパイラー・オプション競合解決
オプション 矛盾するオプション 解決
-qxref -qxref=FULL -qxref=FULL
-qattr -qattr=FULL -qattr=FULL
-E -o -E
-# -v -#
-F -B | -t |-W | -qpath| 構成ファイル設定 -B| -t | -W |-qpath
-qpath -B| -t -qpath が -B および -t をオーバーライドする

一般には、同じオプションの変形が複数指定された場合は (xref および attr を除く)、コンパイラーは最後に指定されたオプションの設定を使用します。 コマンド行に指定するコンパイラー・オプションは、コンパイラーに処理させたい順序で指定する必要があります。

コマンド行フラグが複数のコンパイラー・プログラムで有効な 場合は (例えば、コンパイラー、バインダー、およびアセンブラーの プログラム名に適用される -B、-W、または -I の場合)、そのフラグを構成ファイル内の options、または asopt に指定する必要があります。コマンド行フラグは、該当するコンパイラー・プログラムに送信すべき順序で指定する必要があります。

矛盾するオプションの規則に対する 3 つの例外は、-Idirectory または -I//dataset_name-llibrary、および -Ldirectory オプションです。これらは、複数回指定された場合は累積効果を持ちます。