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

提供: RAD Studio
移動先: 案内検索

[C++ コンパイラ] への移動


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

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

オプション 説明

[ターゲット]、[適用...]、[保存...]

[ターゲット]オプション」を参照。

共通項目

[<プロジェクト名> のプロジェクト オプション]ページの共通項目」を参照。


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

[アセンブラ オプション] 説明 コンパイラ スイッチ
bcc32 bcc32c bcc64 bcciosarm64 bccaarm

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

現在のプロジェクトに追加するアセンブラ オプション(-TX-T など)を入力します。ここで指定したオプションは、[使用するアセンブラを指定]オプションで指定したアセンブラかデフォルト アセンブラ(32 ビット Windows では TASM32)に渡されます。

32 ビット用 Clang 拡張コンパイラは、TASM32 とアセンブルできるアセンブリ ファイルは生成しません。

N/A プラットフォーム未サポート プラットフォーム未サポート プラットフォーム未サポート

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

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

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

.ASM にコンパイル
-S

.OBJ にアセンブル
-B

N/A



プラットフォーム未サポート

N/A



プラットフォーム未サポート

N/A



プラットフォーム未サポート

N/A



プラットフォーム未サポート

[使用するアセンブラを指定]

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

-E

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

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

[浮動小数点演算]オプション 説明 コンパイラ スイッチ
  bcc32     bcc32c     bcc64     bcciosarm64     bccaarm  

[FDIV の不具合を修正]

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

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

acosacoslacosasinasinlatanatan2atan2latanlcoscoshcoshlcoslexpexplfmodfmodlpowpow10pow10lpowlsinsinhsinhlsinltantanhtanhltanl

また、このスイッチは、浮動小数点数と文字列の間の変換を行う関数(printfscanf など)の補正は行いません。
デフォルト値は[False]です。

-fp

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[高速浮動小数点演算]

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

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

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

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

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

-ff

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

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

サイレント モードの浮動小数点命令(FUCOMP)を使用します。

デフォルト値は[true]です。

-fq

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[Required math functions to indicate errors]

このオプションはコンパイラに、プログラムが標準数学ライブラリ関数への呼び出し後に、確実に errno を確認できることを伝えます。
デフォルト値は[True]です。

プラットフォーム未サポート

-fmath-errno

-fmath-errno

-fmath-errno

-fmath-errno

[その他のオプション]

[その他のオプション] 説明 コンパイラ スイッチ
     bcc32           bcc32c          bcc64         bcciosarm64         bccaarm    

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

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

[コード ページ]

ソース コードに BOM(バイト オーダー マーク)が含まれていない場合に ANSI ソース コードで使われる、デフォルトのテキスト文字セットを設定します。

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

入力フィールドには次のいずれかを指定することができます。

  • 実際のコード ページ番号。たとえば次のようなものです。
    • ヨーロッパ言語の場合は 1250
    • 日本語の場合は 932
  • コード ページ エンコーディングのテキスト識別子。UTF8、UTF32、SJIS(日本語の Shift-JIS を表す)などです。

たとえば、-CP オプションに 65001 または UTF8 を指定すると、コンパイラでは BOM を持たないソース コードに対して UTF8 エンコーディングをサポートします。

コード ページが有効になる範囲は以下の 2 つです。

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

構文

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

-CPnnnn

この構文で、nnnn は、特定のロケールに使用するコードページの数値です。
以下のルールが適用されます。

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

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

-CP

-finput-charset=0

N/A

N/A

N/A

[実行文字セット]

実行文字セットを設定します。これは実行可能ファイルの ANSI 文字列で使われます。

[実行文字セット]オプションは、マルチデバイス アプリケーションで使うように設計されたものです。
ホストやターゲットが Windows の場合には、デフォルトのテキスト エンコーディングはアプリケーションの ANSI エンコーディング([コード ページ]オプション)と同じになります。
ただし、マルチデバイス アプリケーションでは、ターゲットの ANSI エンコーディングとホストの ANSI エンコーディングが同じとは限りません。
たとえば、POSIX システム(macOS や最新の Linux を含む)では、システム エンコーディングとして UTF8 を使用するため、[実行文字セット]を "UTF8" に設定する必要があります。

実行文字セットに「932」を指定してアプリケーションをコンパイルすると、すべての文字列リテラルが、コンパイル時の環境が「932」がどうかに関係なく、「932」(日本語 SJIS)エンコーディングでコンパイルされます。ワイド文字列リテラル(L"Test" など)はこのオプションの影響を受けません。

場合によっては、[コード ページ]オプションの値が[実行文字セット]オプションに使われます。次の表は、[コード ページ]オプションと[実行文字セット]オプションの関係を表したものです。

オプション指定の有無 説明
[コード ページ] [実行文字セット]
  • Windows がターゲットであれば、コンパイラは Windows システム コード ページ(CP_ACP)をテキスト文字セットと実行文字セットの両方に使用します。
  • macOS がターゲットであれば、コンパイラは Windows システム コード ページ(CP_ACP)をテキスト文字セットに、UTF-8 を macOS 上の実行文字セットに使用します。
Checkmark.svg

コンパイラは、[コード ページ]の値を、テキスト文字セットと実行文字セットの両方に使用します。

Checkmark.svg

コンパイラは、[実行文字セット]の値を、実行文字セットとして使用し、Windows がターゲットであればシステム コード ページ(CP_ACP)を、マルチデバイスがターゲットであれば、プラットフォーム固有のエンコーディング(macOS の場合には LC_CTYPE)を使用します。

Checkmark.svg
Checkmark.svg

コンパイラは、[コード ページ]の値をテキスト文字セットに、[実行文字セット]の値を実行文字セットに使用します。

-CE

-fexec-charset=0

N/A

N/A

N/A

[連続したメモリ割り当てブロックの最小サイズ (MB 単位)]

連続したメモリ割り当てに使用する最小サイズを指定します。

デフォルトは(no =nMB)で、これは使用可能な最大のチャンクを使用するという意味です。

たとえば、PCH を使用していない大規模なプロジェクトをコンパイルする場合や、非常に大きな(おそらくは自動生成された)ソース ファイル、数多くのソースがインクルードされていてファイルごとの宣言数が多くなったファイルを扱う場合などに、このオプションを設定すると有益です。

--savemem オプションは、PCH メモリを可能な限り領域を確保するよう、bcc32 に依頼します。そしてこのサイズが変わった場合、bcc32 は既存の PCH を再利用できないため、新しいものを再ビルドしなければなりません。
PCH メモリのデフォルト サイズより大きい場合、--savemem=NN で必要なサイズを指定することができます。ここでの NN は、メガバイトのサイズです。すべてのソースをビルドするのに十分、かつ、bcc32 の一時メモリに必要な分もカバーする最適なサイズを見つけるまで、何度か値を試す必要があるかもしれません。

--savemem

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[unsigned char 型]

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

-K

-funsigned-char

N/A

N/A

N/A

[iOS ユニバーサル バイナリ ファイルの生成 (armv7 + arm64)]

コンパイラは、32 ビットと 64 ビット両方の iOS 用ユニバーサル バイナリ ファイルを作成します。
デフォルト値は[false]です(64 ビット バイナリのみ作成されます)。

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[ソース]オプション

[ソース]オプション 説明 コンパイラ スイッチ
  bcc32     bcc32c     bcc64     bcciosarm64     bccaarm  

[コメントのネストを有効にする]

C および C++ のソース ファイルでコメントをネストさせます。標準の C ではコメントをネストすることはできないため、移植性はありません。


デフォルト値は[false]です。
メモ: 条件コンパイル指令を使用すると、コメントを含む大きなコード ブロックを "コメント化" することができます。
 #if 0
 // ...
 /* ... */
 #endif

-C

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[識別子の長さ]

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

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

-i

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

プラットフォーム未サポート

[文字列]オプション

[文字列]オプション 説明 コンパイラ スイッチ
  bcc32     bcc32c     bcc64     bcciosarm64     bccaarm  

[重複文字列をマージ]

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

-d

-fmerge-all-constants

N/A

N/A

N/A

[読み取り専用文字列]

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

-dc

-fconst-strings

N/A

N/A

N/A

[書き込み可能な文字列]

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

-dw

-fwritable-strings

N/A

N/A

N/A

関連項目