#pragma
Pragma 指令の概要:インデックス への移動
構文
#pragma directive-name
説明
#pragma により、同じく #pragma をサポートする他のコンパイラと干渉せずに、ソース コードでコンパイラ指令を設定することができます。コンパイラが directive-name を認識しない場合、エラーや警告メッセージを生成せずに、#pragma 指令を無視します。
C++Builder は、次の #pragma 指令をサポートしています:
指令 | 説明 | クラシック コンパイラ | Clang コンパイラ |
---|---|---|---|
#pragma comment | オブジェクト ファイルにコメント レコードを書き込みます。これは、ライブラリ モジュールへのリンクも含めることができます。詳細については、自動リンク を参照してください。 | ||
#pragma link | 指定されたファイルを実行可能ファイルにリンクするようにリンカに指定します。詳細については、自動リンク を参照してください。 | ||
#pragma exit | プログラム終了時(_exit の前)に実行される関数を指定します。 | ||
#pragma message | コンパイル時に指定されたメッセージを出力します。 | ||
#pragma package | パッケージの初期化順序やその他パッケージ関連の設定を制御します。 | ||
#pragma resource | ファイルにフォーム ユニットのマークを付けるようにリンカに指示するコメント レコードを出力します。 | ||
#pragma startup | プログラムの起動時(main の前)に実行される関数を指定します。 | ||
#pragma alias | 2 つの識別子名が同等であることを示します。 | ||
#pragma alignment | アラインメントの設定と列挙型のサイズを出力します。 | ||
#pragma anon_struct | 無名構造体をコンパイルできるようにします。 | ||
#pragma argsused | 使用されていない引数に関する警告を出力しないようにします。 | ||
#pragma checkoption | 指定されたオプションが設定されているかどうかを確認します。 | ||
#pragma codeseg | 関数割り当てのコード セグメントを指定します。 | ||
#pragma codestring | バイトをコード セグメントに出力します。 | ||
#pragma defineonoption | 指定されたオプションが設定されている場合、指定されたシンボルを定義します。 | ||
#pragma delphiheader | Delphi ヘッダーの範囲を指定します。 | ||
#pragma explicit_rtti | クラスやレコードのどのメンバについて RTTI を生成するかを指定します(public、protected など)。 | ||
#pragma extref | 指定されたシンボルの外部参照を強制します。 | ||
#pragma hdrfile | プリコンパイル済みヘッダーの名前を指定します。 | ||
#pragma hdrignore | 廃止済み。 | ||
#pragma hdrstop | 現在のヘッダーの後でプリコンパイルを停止します。 | ||
#pragma implements | 現在のユニットの名前が含まれているコメント レコードをオブジェクト ファイルに出力します。 | ||
#pragma init_seg | スタートアップ コードの実行順序を制御します。 | ||
#pragma inline | -B オプションでコンパイラが自動的に再起動するようにします。
|
||
#pragma intrinsic | 関数のインライン展開を制御するオプションをオーバーライドします。 | ||
#pragma nopushoptwarn | #pragma option push と #pragma option pop が対応しない場合の警告が表示されないようにします。 | ||
#pragma nopackwarning | #pragma pack push と #pragma pack pop が対応しない場合の警告が表示されないようにします。 | ||
#pragma noretval | 関数の戻り値がないことを指定します。 | ||
#pragma obsolete | 指定されたシンボルがもう使用されていないことを示します。 | ||
#pragma once | 現在のヘッダー ファイルが複数回インクルードされないことを指定します。 | ||
#pragma option | 現在のオプションを保存し、指定されたオプションを設定します。 | ||
#pragma pack | 構造体のパッキング アラインメントを設定します。 | ||
#pragma region/end_region | コード領域を指定します。IDE エディタでコードの折りたたみに使用されます。 | ||
#pragma samecodeseg | 指定された関数を同じコード セグメントに配置します。 | ||
#pragma sizeof | 指定された構造体のサイズを出力します。 | ||
#pragma sysheader | システム ヘッダーの範囲を指定します。 | ||
#pragma undefineonoption | 指定されたオプションが設定されている場合、指定されたシンボルの定義を解除します。 | ||
#pragma warn | 警告の有効/無効を切り替えます。 |
メモ: 多くの #pragma 指令について、クラシック コンパイラによってのみサポートされており、Clang コンパイラはエラーを出力することなく指令を受け付けますが、実際には何も行いません。
注意: #pragma comment (lib, "...") および #pragma link "..." は両者とも 自動リンク が有効です。
何も指定されていない場合、デフォルトの拡張子が異なります。 ロジックは短い拡張子のみをサポートする点に注意してください。 つまり、3文字以下の拡張子です。 拡張子が指定されていない場合、#pragma link "..." のデフォルトは、WIN32 および WIN64 の場合、それぞれ .obj および .o となります。
#pragma comment (lib, "...") のデフォルトは、WIN32 および WIN64 の場合、それぞれ .lib および .a となります。メモ: すべての Clang pragmas を参照するには、Clang コンパイラ ユーザー マニュアル を参照してください。