一般に、同じオプションの複数のバリエーションが指定されている場合は (xref と attr を除く)、コンパイラーは、最後に指定されたオプションの設定値を使用します。コマンド行に指定するコンパイラー・オプションは、コンパイラーに処理させる順序で指定しなければなりません。
矛盾するオプションの規則には、 -Idirectory オプションおよび -Ldirectory オプションの 2 つの例外があります。これらが複数回指定された場合には、その効果が累積されます。
多くの場合、コンパイラーは、以下の順序で、対立するオプションまたは矛盾するオプションを解決します。
- ソース・コード内のプラグマ・ステートメントは、コマンド行で指定されたコンパイラー・オプションをオーバーライドします。
- コマンド行に指定されるコンパイラー・オプションは、構成ファイルに指定されたコンパイラー・オプションをオーバーライドします。対立する、または互換性のないコンパイラー・オプションがコマンド行で指定されている場合、コマンド行で後のほうに指定されているオプションが優先されます。
- 構成ファイルに指定されるコンパイラー・オプションは、コンパイラーのデフォルト設定をオーバーライドします。
すべてのオプション競合が上記の規則で解決するわけではありません。下のテーブルでは、例外およびコンパイラーがそれらの間の競合を処理する方法を要約しています。
オプション | 矛盾するオプション | 解決 |
---|---|---|
-qhalt | -qhalt によって指定される複数の重大度 | 指定された最低の重大度 |
-qnoprint | -qxref | -qattr | -qsource | -qlistopt | -qlist | -qnoprint |
-qfloat=rsqrt | -qnoignerrno | 最後に指定されたオプション |
-qxref | -qxref=FULL | -qxref=FULL |
-qattr | -qattr=FULL | -qattr=FULL |
-p | -pg | -qprofile | -p | -pg | -qprofile | 最後に指定されたオプション |
-E | -P | -o | -S | -E |
-P | -c | -o | -S | -P |
-# | -v | -# |
-F | -B | -t | -W | -qpath | 構成ファイル設定 | -B | -t | -W | -qpath |
-qpath | -B | -t | -qpath は -B および -t をオーバーライドする |
-S | -c | -S |
コンパイラーの起動
コマンド行におけるコンパイラー・オプションの指定