[C++ コンパイラ|拡張]

提供:RAD Studio (日本語)
移動: 案内, 検索

C++ コンパイラ:インデックス への移動


[プロジェクト|オプション...|C++ コンパイラ|拡張]

このダイアログ ボックスでは、C++ コンパイラのコンパイル拡張オプションを設定します。

オプション 説明

[ビルド構成]オプション

[ビルド構成]オプションで説明。

共通オプション

[プロジェクトのプロジェクト オプション]ページの共通項目で説明。


アセンブラ オプション 説明

[アセンブラ オプション]

現在のプロジェクトに追加するアセンブラ オプション(-TX や -T など)を入力します。 -E オプションで指定したアセンブラに、指定したオプションを渡します。

[.ASM にコンパイルしてから
.OBJ にアセンブルする](-S) (-B)

コンパイラは、C++(または C)ソース コードから .ASM ファイルをまず生成します(-S コマンドライン オプションと同様)。 次に、TASM32(または -E オプションで指定したアセンブラ)を呼び出して、.ASM ファイルから .OBJ ファイルを生成します。 .ASM ファイルはそのあと削除されます。

アセンブリのキーワードになっている静的グローバル変数が C または C++ ソース コードで宣言されている場合、プログラムは、-B オプションを付けてコンパイルできません。 これは、コンパイラが(他の変数の場合とは異なり)静的グローバル変数の先頭に下線を付けず、その結果、コードのアセンブル時にアセンブリ キーワードが原因でエラーが発生するためです。 デフォルトは[False]です。

[アセンブリ コードにコンパイル](-S)

コンパイラは、C++(または C)ソース コードから .ASM ファイルを生成します。 デフォルトは[False]です。

[使用するアセンブラを指定](-E)

指定されたファイル名のアセンブラを使って、命令をアセンブルします。 32 ビット コンパイラでは、TASM32 をデフォルト?アセンブラとして使用します。 [プロジェクトのプロジェクト オプション]ページの共通項目参照 ポップアップ ボタンの説明を参照。



[浮動小数点演算]オプション 説明

[FDIV の不具合を修正]
(-fp)

初期の Pentium では、特定の浮動小数点除算を正確に実行できないチップがあります。 この問題に直面することはめったにありませんが、このオプションを使用すると、浮動小数点数演算をエミュレートするコードが挿入されて、正確な演算結果が保証されます。 このオプションを[True]にすると、プログラムの FDIV 命令の性能が低下します。このオプションは、FDIV 命令を補正する必要があるモジュールに対してのみ使用してください。 ランタイム ライブラリでも FDIV 命令は使用されていますが、このオプションによって補正の有無は変更されません。 ランタイム ライブラリを補正するには、このオプションを使って該当するランタイム ライブラリを再コンパイルします。

このオプションを使用する場合、次の関数は、補正されていないアセンブリ言語で FDIV 命令を使用します。 acosacoslacosasinasinlatanatan2atan2latanlcoscoshcoshlcoslexpexplfmodfmodlpowpow10pow10lpowlsinsinhsinhlsinltantanhtanhltanl

printfscanf については補正されません。
デフォルトは[False]です。

[高速浮動小数点数演算](-ff)

明示的な型変換か暗黙的な型変換かに関係なく、浮動小数点数演算が最適化されます。 これにより、浮動小数点数演算が ANSI のオペレーティング モードより速くなります。

このオプションの目的は、C の本来の意味に反した技術を使って最適化を認めることにあります。

double x; x = (float) (3.5*x);

これを正しく実行するには、x に 3.5 を掛けて、float 精度に切り捨てられた double を算出し、次に double として x に格納します。高速実数演算では、long double 値が直接 double に変換されます。 サイズの小さな浮動小数点への受け渡しで生じる桁落ちによって動作が異なるプログラムはまれなので、このオプションがデフォルトになっています。

このオプションを[False]にすると(-ff-)、コンパイラは浮動小数点の変換に関して、ANSI の規約に忠実に従い、浮動小数点数演算を行います。
デフォルトは[True]です。

[浮動小数点比較をサイレント モードで実行]
(-fq)

サイレント モードの浮動小数点命令(FUCOMP)を使用します。
デフォルトは[True]です。



[その他のオプション] 説明

[コンパイラに渡す追加オプション]

現在のプロジェクトに追加するコンパイラのオプションを入力します。

[コード ページ]
(-CP)

ユーザー定義のコード ページをサポートできるようにします。 このオプションは、主に、コンパイラにマルチバイト文字列(MBCS)を構文解析および変換する方法を指示するために使用します。コード ページが有効になる範囲は以下の 2 つです。

  1. 文字列定数、コメント、#error、および #pragma 指令
  2. ワイド文字の文字列定数(L'<MBCS string>' によって指定されたもの)

最初のセットに属する MBCS 文字列の場合、Windows API 関数 IsDBCSLeadByteEx への呼び出しを使って正確なコード ページを指定しなければなりません。 この関数を使用する場合、コード ページを指定すると、特定のロケールのために MBCS を正確に構文解析することができます(たとえば、この関数を使用すると、コンパイラが MBCS の末尾バイトのバックスラッシュを正確に構文解析できます)。

2 番目のセットに属する MBCS 文字列(ワイド文字の文字列定数)の場合、正確なコードページを指定すると、Windows API 関数 MultiByteToWideChar を使って MBCS 文字列を Unicode 文字列に変換できます。

構文: 次のコマンドライン オプションを使ってコード ページを可能にします。

-CPnnnn

この構文で、nnnn は、特定のロケールに使用するコードページの 10 進値です。

以下のルールが適用されます。

  1. コード ページを設定する場合、nnnn の数値設定は Microsoft NLS Code Page ID の値に従わなければなりません。 たとえば、米国の MS-DOS アプリケーションには 437 を使用します。 日本の場合には 932 を使用します。
  2. 数値 nnnn は OS がサポートする有効なコード ページでなければなりません。
  3. アジア語のロケールとコード ページをアクセス可能にするために、関連する Windows NLS ファイルをインストールしなければならない場合があります。 詳細は Microsoft NLS Code Page マニュアルを参照してください。
  4. コードページ値を指定しない場合、コンパイラは Windows API 関数 GetACP を呼び出してシステムのデフォルトコードページを取得し、上記のように文字列を処理するときにはその値を使用します。

デフォルトではコード ページは使用されません。

[プロジェクトのプロジェクト オプション]ページの共通項目参照 ポップアップ ボタンの説明を参照。

[unsigned char 型](-K)

コンパイラは、char 宣言を unsigned char 型であるかのように処理します。これにより、他のコンパイラとの互換性が提供されます。
デフォルトは[False]です。



[ソース]オプション 説明

[コメントのネストを有効にする]
(-C)

C および C++ ソース ファイルでコメントをネストできます。標準の C ではコメントをネストすることはできず、移植性はありません。
デフォルトは[False]です。

[識別子の長さ](-i)

識別子の中の有効文字数(コンパイラで識別される先頭からの文字数)を指定します。C++ が識別する長さには制限がありませんが、それ以外ではすべての識別子は、最初の有効文字数がユニークであれば別個の識別子として扱われます。 識別子には、変数、プリプロセッサ マクロ名、構造体メンバ名があります。

長さの値として有効なものは 0 および 8 ~ 250 です。0 を入力すると、識別子の長さの上限である 250 が設定されたものとみなされます。C++Builder のデフォルトでは、識別子ごとに 250 文字(バイト)までを使用します。 UNIX コンパイラも含めた他のシステムでは、8 文字までしか認識しないものが数多くあります。 このような環境へ移植するときは、識別される文字数を少なくしてコンパイルした方がよい場合もあります。この方法でコンパイルすれば、長い識別子の中に指定した文字数の範囲内で名前の重複がないかをチェックできます。 デフォルトは[250]です。



[文字列]オプション 説明

[重複文字列のマージ](-d)

2 つのリテラル文字列の一方が他方と一致する場合、2 つをマージします。 これにより、プログラムは小さくなりますが(コンパイル時間が少し長い)、一方の文字列を修正するとエラーになることがあります。
デフォルトは[False]です。

[読み取り専用文字列](-dc)

文字列を読み取り専用データ セグメントに挿入します。デフォルトは[False]です。

[書き込み可能な文字列](-dw)

文字列を書き込み可能なデータ セグメントに挿入します。
デフォルトは[False]です。



全般オプション 説明

[デフォルト]

現在の設定を各新規プロジェクトのデフォルトとして保存します。

他言語版