Pragmaの概要
pragma は、コンパイラに特定の情報を伝えるためのコンパイラ指示子です。
主に、コンパイル時の処理を制するために使用されます。
Pragmaは、コンパイラに対して特定の指示を与えるためのプリプロセッサ指令です。これにより、コンパイル時の処理を細かく制できます。例えば、構造体のメモリ配置を調整したり、特定の響告を抑制したり、コンパイラに特定の最適化を指示したりできます。
Pragmaの種類と例
- #pragma once:ヘッダーファイルが複数回インクルードされるのを防ぎます。
- #pragma pack(n):構造体のメンバの配置を調整します。nはバイト単位のパッキングサイズを指定します。
- #pragma warning(disable:4700):特定の告番号を無効にします。
- #pragma optimize(“”, off):関数レベルで最適化を無効にします。
- #pragma message (“message”):コンパイル時にメッセージを表示します。
- #pragma comment (Lib, “library. lib”):リンク時にライブラリを指定します。
#pragma comment
#pragma comment は、C/C++のプリプロセッサ指令で、オブジェクトファイルまたは実行可能ファイルに特定の情報を追加する指示です。この指示は、コンパイラやリンカーが特定の操作を行う際に情報を参照できるようにするためのものであり、主にライブラリ検索パスの設定、リンカーオプションの設定、コンパイラのバージョン情報などをオブジェクトファイルに埋め込むために使用されます。
#pragma comment の構文は以下の通りです。
|
1 |
#pragma comment( comment-type [ , "コメント文字列" ] ) |
- comment-type:コメントの種類を指定する識別子です。
- lib:ライブラリ検索パスを追加します。
- linker: リンカーオプションを指定します。
- user:ユーザーが自由に記述するコメントを入れます。
- compiler:コンパイラのバージョン情報を入れます。
- “コメント文字列”:comment-typeに応じて、追加情報を指定します。。
具体的な例
|
1 |
#pragma comment (lib, "lib_name.lib") |
この例は、リンカーにIib_name.lib というライブラリを検索するように指示します。
|
1 |
#pragma comment (linker,"/INCREMENTAL:NO”) |
この例は、リンカーオプションとして INCREMENTAL:NOを指定します。
|
1 |
#pragma comment (user, "This is a user comment.") |
この例は、ユーザーが自由に記述するコメントを入れます。
#pragma comment は、主にライブラリのリンクやリンカーオプションの設定など、コンパイル時に必要な情報をオブジェクトファイルに含める際に役立ちます。特に、リンカーのオプションを直接コマンドラインから指定する代わりに、#pragma comment を使ってコンパイル時に設定することで、コードの移植性を高めたり、プロジェクトの構成を整理したりできます。

コメント