[C++ コンパイラ]

提供: Appmethod Topics
移動先: 案内検索

[<プロジェクト名> のプロジェクト オプション]ダイアログ ボックス への移動


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

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

オプション 説明

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

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

共通項目

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

[C++ コンパイル]オプション

項目 説明 コンパイラでのサポート
bcc32 bcc32c bcc64 bccosx bcciosarm bcciosarm64 bccaarm

[例外を有効にする]

C++ 例外処理を設定します。このオプションがチェックされていないときにコードの中で例外処理ルーチンを使用しようとすると、コンパイル時にエラー メッセージが生成されます。

このオプションのチェックをはずすと、プログラムから例外処理情報を簡単に取り除くことができます。これは他のプラットフォームまたはコンパイラにコードを移植する場合に便利です。このオプションのチェックをはずすと、例外処理情報のコードがコンパイルされません。例外処理が有効の状態で作成されたオブジェクト ファイルとライブラリ ファイル(Appmethod C++ ランタイム ライブラリなど)をリンクする場合、アプリケーションにはまだ例外処理情報コードを含められます。

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

[デストラクタによるクリーンアップを行う]

このオプションを設定した場合、例外が送出されると、catch 文と throw 文のスコープ内で自動宣言されたオブジェクトに対してデストラクタが呼び出されます。

このオプションをオンした場合、[実行時型情報 (RTTI) を有効にする]もオンする必要があります。new で割り当てられた動的オブジェクトに対してデストラクタが自動的に呼び出されることはなく、動的オブジェクトが自動的に解放されることもない点に注意してください。

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

[例外プロローグ コードをインライン展開する]

すべての例外処理関数のインライン コードを展開します。これによって実行速度を速めることができますが、実行可能ファイルのサイズが大きくなります。

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

[グローバル デストラクタ カウント]

グローバル デストラクタ カウントを使用します(旧バージョンのコンパイラ互換用オプション)。

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

[例外変数を非表示にする]

コンパイラは次の例外処理シンボルを特殊なシンボルとして扱います。

  • __exception_info
  • __exception_code
  • __abnormal_termination

これらはすべて構造化例外処理(SEH:Structured Exception Handling)コードのための特殊なコンパイラ/RTL 構造にマップされます。SEH を使用していないときにこの名前の変数を持っている場合、これらの変数を参照できず、コードはコンパイルされません。このオプションを使った場合は、このイベントの中で特殊なシンボルが隠されるので、この名前の変数を使用できます。

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

[位置情報]

このオプションを[true]にすると、例外を起こしたファイルの名前とソースコードの行番号情報を提供するので、実行時において例外操作を指示できるようになります。これにより、プログラムは __ThrowFileName グローバル関数を使って例外が発生したファイルを取得したり、__ThrowLineNumber グローバル関数を使って C++ 例外が送出された行番号にアクセスできます。

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

[DLL/MT デストラクタによるクリーンアップを行わない]

DLL またはマルチスレッド デストラクタのクリーンアップを実行しません。

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

[例外エピローグ コードをインライン展開しない]

このオプションを[true]にすると、例外処理を行うエピローグ コード部分はインライン展開されません。実行速度はやや低下します。

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

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[実行時型情報 (RTTI) を有効にする]

選択すると、コンパイラは、実行時型識別(RTTI: Run-time Type Identification)が可能なコードを生成します。
[デストラクタによるクリーンアップ]のチェック ボックスをオンにした場合は、このオプションもオンする必要があります。

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

YesC++11Feature.png
YesC++11Feature.png

[メンバの精度を優先する]

コンパイラは、メンバ ポインタ型の宣言での精度を使用します。派生クラスを指すポインタを単純な基底クラスのメンバを指すポインタに明示的にキャストする(実際には派生クラスのメンバをポイントしているときに)場合に、このオプションを使用します。

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

YesC++11Feature.png
YesC++11Feature.png

[メンバ ポインタ]

[できるだけ小さい]

メンバ ポインタの表現に、特定のクラスのすべてのメンバをポイントできる最も短い表現が使用されます。メンバ ポインタ型を宣言した時点でクラスが完全には定義されていない場合、最も一般的な表現が選択され、警告が表示されます。

[多重継承]
メンバ ポインタは、多重継承クラスのメンバをポイントできます。ただし、仮想基底クラスのメンバはポイントできません。

[単一継承]
メンバ ポインタは、単一継承を使用する基底クラスのメンバだけをポイントできます。

[デフォルト]*
メンバ ポインタにオプションが設定されていません。
これがデフォルトの設定です。

YesC++11Feature.png
YesC++11Feature.png

[テンプレート生成]

[デフォルト]
コンパイラは、すべてのテンプレート インスタンスのパブリック(グローバル)定義を生成します。複数のモジュールが同じテンプレート インスタンスを生成すると、リンカは自動的に重複したものをまとめて 1 つのコピーに作り変えます。インスタンスを生成するには、関数の本体(テンプレート関数の場合)、または通常ヘッダー ファイルのメンバ関数の本体と静的データ メンバの定義(テンプレート クラスの場合)がコンパイラで使用できなければなりません。

このオプションは、テンプレート インスタンスを生成する最も便利な方法です。 これがデフォルトの設定です。

[外部]
コンパイラは、すべてのテンプレート インスタンスへの外部参照を生成します。このオプションを使用する場合は、リンクが必要なテンプレート インスタンスはすべて、少なくとも 1 つの別のモジュールに明示的インスタンス化指令を持たなければなりません。

YesC++11Feature.png
YesC++11Feature.png

[仮想テーブル]

[スマート]
アプリケーションに、モジュール間で共通の C++ 仮想テーブルとインラインで展開されない inline 関数を生成します。したがって、ある仮想テーブルまたはインライン展開されない inline 関数の 1 つのインスタンスだけがプログラムに含まれることになります。[スマート] オプションによって、実行可能ファイルは最小で最も効率的なものになりますが、.OBJ と .ASM ファイルは Appmethod C++ のリンカとアセンブラでしか利用できなくなります。 これがデフォルトの設定です。

[外部]
仮想テーブルへの外部参照を生成します。[スマート]オプションを使用しない場合は、[外部]または[Public]オプションでグローバル仮想テーブルを作成し、それぞれのモジュールから参照します。このオプションを使用する場合は、プログラムを構成する少なくとも 1 つのモジュールを[Public]オプションでコンパイルして、仮想テーブルの定義を提供する必要があります。

[Public]
仮想テーブルのパブリック定義を作成します。[外部]オプションを使用するとき、プログラムのモジュールを、最低 1 つ[Public]オプションでコンパイルし、仮想テーブルの定義を用意する必要があります。ほかのモジュールは、すべて[外部]オプションでコンパイルして、仮想テーブルの[Public]コピーを参照させる必要があります。

デフォルト値は[スマート]です。

YesC++11Feature.png
YesC++11Feature.png

[従来のコンパイラ]

[従来のコンパイラ]オプション 説明 コンパイラでのサポート
bcc32 bcc32c bcc64 bccosx bcciosarm bcciosarm64 bccaarm

['従来の' Borland コンパイラを使用]

32 ビット Windows プラットフォーム用の C++ コンパイラとして、従来の BCC32 コンパイラと Clang 拡張 BCC32C コンパイラのいずれかを有効にします。

このオプションを使用することで、プロジェクトを BCC32 と BCC32C の間で切り替えることができます。このオプションは次の値に設定することができます。

  • [True]: 32 ビット Windows プラットフォームを対象とするプロジェクトの C++ コンパイラとして BCC32 が有効になります。
  • [False]: 32 ビット Windows プラットフォームを対象とするプロジェクトの C++ コンパイラとして BCC32C が有効になります。

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

[コンパイル全般]オプション

[コンパイル全般]オプション 説明 コンパイラでのサポート
bcc32 bcc32c bcc64 bccosx bcciosarm bcciosarm64 bccaarm

[宣言された取り得る値の範囲に必要なバイト数だけを列挙型に割り当てる]

最小サイズの列挙型を使用するよう 64 ビット コンパイラに指示します。

宣言された取り得る値の範囲に必要なバイト数だけを列挙型に割り当てます。

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

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[呼び出し規約]

[Pascal]
関数呼び出しを Pascal の呼び出しシーケンスを使って生成することをコンパイラに指示します(下線記号を生成しない、すべて大文字にする、呼び出し元がスタックの後片付けを行う、引数を左から右にプッシュする)。このオプションは、サブルーチンと関数をすべて __pascal キーワードで宣言することと同じです。これにより、Cの呼び出し規約を使用した場合と比べて、多くの場合、関数呼び出しのサイズが小さくなり、速度が上がります。関数は、正しい型の引数を正しい数だけ渡さなければなりません。__cdecl__fastcall__stdcall キーワードを使用すると、別の呼び出し規約を使用する関数またはサブルーチンを宣言できます。

[C]
関数呼び出しを C の呼び出し規約を使って生成することをコンパイラに指示します(下線記号を生成する、大文字/小文字を区別する、引数を右から左にプッシュする)。このオプションは、サブルーチンと関数をすべて __cdecl キーワードで宣言することと同じです。C の呼び出し規約で宣言された関数は、可変の変数のリストを使用できます。引数の数を固定する必要はありません。
__pascal__fastcall__stdcall キーワードを使用すると、別の呼び出し規約を使用する関数またはサブルーチンを宣言できます。 これがデフォルトの設定です。

[_msfastcall]
明示的に宣言された呼び出し規約を持たないすべての関数に代えて __msfastcall 呼び出し規約を使用することをコンパイラに指示します。

[Fastcall (レジスタ)]
このオプションを指定すると、コンパイラはサブルーチンと関数をすべて新しい register 引数受け渡し規約を使って生成するようになります。このオプションは、サブルーチンと関数をすべて __fastcall キーワードで宣言することと同じです。このオプションを有効にすると、関数やルーチンはレジスタ経由でパラメータを受け取るようになります。

__pascal__cdecl__stdcall キーワードを使用すると、別の呼び出し規約を使用する関数またはサブルーチンを宣言できます。

[stdcall]
関数呼び出しを標準呼び出しシーケンスを使って生成することをコンパイラに指示します(アンダースコアを生成しない、大文字/小文字をそのままにする、呼び出された側でスタックをポップする、パラメータを右から左にプッシュする)。このオプションは、サブルーチンと関数をすべて __stdcall キーワードで宣言することと同じです。関数には、正しい型の引数を正しい数だけ渡す必要があります。

__cdecl__pascal__fastcall キーワードを使用すると、別の呼び出し規約を使用する関数またはサブルーチンを宣言できます。

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

YesC++11Feature.png
YesC++11Feature.png

[データのアラインメント]

[バイト]
変数またはデータ フィールドのアラインメントを特定のメモリ境界に制限しません。データは偶数または奇数アドレスのいずれかにアラインメントされ、これは次の空きアドレスが偶数または奇数のどちらかによって左右されます。バイト方式のアラインメントではプログラムがよりコンパクトになるため、そのプログラムの動作は少し遅くなります。他のデータ アラインメント オプションの場合は、80x86 プロセッサがデータをフェッチ、および保存する速度が向上します。

[ワード]
2 バイトのデータ アラインメントです。文字以外のデータを偶数アドレスに揃えます。自動変数とグローバル変数は適切に揃えられます。char および unsigned char 型の変数とフィールドは任意のアドレスに配置でき、その他は偶数アドレスに配置されます。

[ダブル ワード]
4 バイトのデータ アラインメントです。文字以外のデータを 32 ビット ワード(4 バイト)境界に揃えます。データが 4 バイトより小さな型サイズの場合は、その型サイズで揃えられます。

[クワッド ワード]
8 バイトのデータ アラインメントです。文字以外のデータを 64 ビット ワード(8 バイト)境界に揃えます。データが 8 バイトより小さな型サイズの場合は、その型サイズで揃えられます。 これがデフォルトの設定です。

[パラグラフ]
16 バイトのデータ アラインメントです。文字以外のデータを 128 ビット(16 バイト)境界に揃えます。データが 16 バイトより小さな型サイズの場合は、その型サイズで揃えられます。

デフォルト値は[クワッド ワード](8)です。

YesC++11Feature.png
YesC++11Feature.png

[C++ のアクセス制御を無効にする]

アクセス制御を強制しないようコンパイラに指示します。つまり、アクセス可能でないはずの protected または private のメンバに対してアクセスを行った時に、コンパイラがエラーを出力しません。このオプションは、BCC32 では許可されるけれども BCC64 ではアクセス制御違反と見なされるコードがある場合に使用します(それよりも BCC64 の規則に合わせてコードを更新することをお勧めします)。

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

YesC++11Feature.png

[バッチ コンパイルを有効にする]

バッチ コンパイルを有効にします。

このオプションを[true]にすると、各ソース モジュールが個別にコンパイラに渡されるのではなく、ソース モジュールすべてが同じコマンドラインで C++ コンパイラに渡されます。バッチ コンパイルの場合、ビルド関連のイベントは、個々のファイルではなくバッチ コンパイル全体に対して生成されます。同様に、バッチ コンパイルでは同じ 1 つのプロジェクト オプション セットが使用され、ファイルごとのオーバーライドはできません。

Clang 拡張 C++ コンパイラを使用している場合は、[バッチ コンパイルを有効にする]と[C++ コンパイラを別プロセスで実行する]を組み合わせることで、並列コンパイルを有効にすることができます。32 ビット プラットフォーム向け Clang 拡張コンパイラでは、ファイルがコンパイルに失敗した後にバッチ コンパイルを停止します。

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

[エラーの最大数]

検出されたエラーが指定の数に達したらバッチ コンパイルを中止します。0 ~ 255 の任意の数を入力できます。

デフォルト値は 1 です。

0 を入力すると、ファイルの終わりに達するか、警告数の上限に達するまで、コンパイルが続行されます。

[最大警告数]

検出された警告が指定の数に達したらバッチ コンパイルを中止します。0 ~ 255 の任意の数を入力できます。

デフォルト値は 255 です。

0 を入力すると、ファイルの終わりに達するか、エラー数の上限に達するまで、コンパイルが続行されます。

[最初のエラー時に停止]

最初にエラーが発生したファイルでバッチ コンパイルを停止します。

YesC++11Feature.png
YesC++11Feature.png

[拡張エラー情報]

コンパイラは、詳細なエラー情報を生成します。

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

YesC++11Feature.png
YesC++11Feature.png

[C++ コンパイルを強制する]

拡張子に関係なくすべてのソース ファイルを C++ ファイルとしてコンパイルさせます。

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

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[命令セット]

[80386]
80386 保護モード互換命令を生成します。 これがデフォルトの設定です。

[80486]
i486 保護モード互換命令を生成します。

[Pentium]
Pentium 命令を生成します。このオプションにより Pentium コンピュータでのアプリケーションの実行速度が速くなりますが、80386 や i486 オプションでコンパイルした場合よりプログラムのサイズが少し大きくなります。また、Pentium でコンパイルしたコードは、Pentium 以外のシステムでもその性能が維持されます。

[Pentium Pro]
Pentium Pro 命令を生成します。

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

YesC++11Feature.png
YesC++11Feature.png

[整数サイズの列挙型]

列挙型(enum 型の変数)に対してワード全体(32 ビットプログラムの場合は 4 バイトの int)を割り当てます。

このオプションを[false]にすると、コンパイラは列挙型の値を保持できる最小の整数を割り当てます。列挙型の値の範囲が 0 ~ 255(最小値)または -128 ~ 127(最大値)の場合は、コンパイラは unsigned または signed の char を割り当てます。列挙型の値が以下の範囲の場合は、unsigned または signed の short を割り当てます。0 ~ 65,535 または -32,768 ~ 32,767。

範囲外の値の場合、列挙型の値であることを表すために 4 バイトの int(32 ビット)を割り当てます。

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

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[整数型の列挙型]

整数サイズの列挙型を有効にして、型チェックの観点から列挙型を整数型として扱います(列挙型の型チェックを実行しません)。
このオプションをオフにすると、コンパイラは sizeof(enum x) を可能な最小サイズにして型チェックに列挙型のルールを適用します。

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

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[準拠する言語仕様]

[ANSI]

ANSI 準拠のキーワードと拡張キーワードを使用します。C および C++ の ANSI 互換コードがコンパイルされ、移植性が最大になります。ANSI キーワード以外はキーワードとして扱われません。

[GNU]

GCC(GNU Compiler Collection)準拠のキーワードと拡張キーワードを使用します(GCC は Free Software Foundation によって配布されているもので、http://gcc.gnu.org/ で入手できます)。__attribute__、__const、__inline__、__signed__ といった GNU 固有のキーワードや拡張キーワードを認識するようコンパイラに指示します。「GNU 属性」を参照。

[K & R]

KR 準拠のキーワードと拡張キーワードを使用します。KR 拡張キーワードのみを認識し、C++ 拡張キーワードはすべて標準の識別子として処理するよう、コンパイラに指示します。

[Borland/CodeGear]

Borland/CodeGear/Embarcadero の C++ に準拠するキーワードと拡張キーワードを使用します。C 言語キーワード(nearfarhugeasmcdeclpascalinterrupt_export_ds _cs_ss _es など)とレジスタ疑似変数(_AX_BX など)に対する拡張機能を認識するようコンパイラに指示します。 これがデフォルトの設定です。

[Unix System V]

UNIX System V 準拠のキーワードと拡張キーワードを使用します。UNIX V キーワードのみを認識し、Borland/CodeGear/Embarcadero の C++ の拡張キーワードはすべて標準の識別子として処理するよう、コンパイラに指示します。

ヒント: ソース コードで宣言の構文エラーが発生する場合は、このオプションが[Borland/CodeGear]に設定されているかを確認してください。

デフォルト値は[Borland/CodeGear]です。

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

[レジスタ変数]

[None]
レジスタ変数の使用を無効にします。register キーワードを使用している場合でも、レジスタ変数を使用しないようにコンパイラに指示します。 これがデフォルトの設定です。

[明示的]
register キーワードが指定され、レジスタが使用可能な場合にのみレジスタ変数を使用します。レジスタの使用を最適化するには、このオプションまたは[常に実行]オプションを使用します。-rd は #pragma オプションで使用できます。

[常に実行]
register キーワードでレジスタ変数が指定されていなくても、自動的にレジスタ変数を割り当てます。レジスタ変数をサポートしていない既存のアセンブリコードとやり取りする場合以外は、通常、[常に実行]を使用します。

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

YesC++11Feature.png
YesC++11Feature.png

[それを超えると停止するエラー出力の最大数を設定する (0 = 制限なし)]

64 ビット C++ コンパイラで出力可能なエラー数を指定するには、このフィールドの数値を選択し、設定したい数値を入力します。 デフォルト値は[1]です。

YesC++11Feature.png

[標準スタック フレーム]

標準スタック フレーム(関数標準の入口と終了コード)を生成します。呼び出されたサブルーチンのスタックの中をステップするプロセスが簡素化されるので、デバッグには便利です。

このオプションをオフにすると、ローカル変数と引数のない関数が、短縮形のエントリとリターン コードでコンパイルされます。そのため、コードが小さくて速くなります。

デバッグを目的としてソース ファイルをコンパイルする場合は、必ずこのオプションをオンにする必要があります。

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

YesC++11Feature.png
YesC++11Feature.png

子ページ

関連項目