#pragma options

説明

#pragma options ディレクティブは、 ソース・プログラムのコンパイラー・オプションを指定します。

構文

構文図を読む構文図をスキップする                           .--------------------------------------.
                           V                                      |
>>-#--pragma--+-option--+----+-option_keyword-------------------+-+-><
              '-options-'    |                    .-;---------. |
                             |                    | .-,-----. | |
                             |                    V V       | | |
                             '-option_keyword--=------value-+-+-'
 

一般にプラグマ・オプションはデフォルトでコンパイル単位全体に適用されます。

#pragma options ディレクティブで複数のコンパイラー・オプションを指定するには、 ブランク・スペースを使ってオプションを分割します。 例を以下に示します。

#pragma options langlvl=stdc89 halt=s spill=1024 source

ほとんどの #pragma options ディレクティブは、ソース・プログラムのどのステートメントよりも前に指定しなければなりません。ただし、コメント、ブランク行、および他のプラグマの指定に限り、これらのディレクティブの前に置くことができます。 例えば、以下のように、プログラムの最初の数行をコメントにして、その後に #pragma options ディレクティブを続けることができます。

/* The following is an example of a #pragma options directive: */

#pragma options langlvl=stdc89 halt=s spill=1024 source

/* The rest of the source follows ... */

ソース・プログラム内のどのコードより前に指定されたオプションは、コンパイル単位全体に適用されます。プログラム全体で他のプラグマ・ディレクティブを使用すると、ソース・コードの選択済みブロックに対してオプションをオンにすることができます。 例えば、以下のようにソース・コードの一部をコンパイラー・リストに組み込むように要求することができます。

#pragma options source 

/*  Source code between the source and nosource #pragma
    options is included in the compiler listing                */

#pragma options nosource

下記のテーブルの設定は、#pragma options に有効なオプション です。 詳しくは、同等のコンパイラー・オプションのページを参照してください。

#pragma options option_keyword に有効な設定 同等のコンパイラー・オプション 説明
align=option -qalign コンパイラーがファイルのコンパイルに使用する集合体の位置合わせ規則を指定する。
[no]attr

attr=full

-qattr すべての名前を含む属性のリストを作成する。
chars=option -qchars

#pragma chars も参照

char 型のすべての変数を符号付きまたは符号なしのいずれかとして処理するようコンパイラーに命令する。
[no]check -qcheck 特定タイプのランタイム検査を行うコードを生成する。
[no]compact -qcompact 最適化と共に使用すると、可能な場合に、実行速度を犠牲にしてコード・サイズを削減する。
[no]dbcs -qmbcs、-qdbcs ストリング・リテラルとコメントには、DBCS 文字を含むことができる。
C のみ [no]dbxextra -qdbxextra 参照されない変数のためのシンボル・テーブル情報を生成する。
[no]digraph -qdigraph 特定の連字とキーワード演算子を使用することができる。
[no]dollar -qdollar ID の名前に $ シンボルを使用できるようにする。
enum=option -qenum

#pragma enum も参照

列挙の占めるストレージの量を指定する。
flag=option -qflag 報告する診断メッセージの最小の重大度レベルを指定する。

重大度レベルは、以下のように指定することもできます。

#pragma options flag=i => #pragma report (level,I)

#pragma options flag=w => #pragma report (level,W)

#pragma options flag=e,s,u => #pragma report (level,E)

float=[no]option -qfloat 浮動小数点演算の速度や精度を上げるためにさまざまな浮動小数点オプションを指定する。
[no]flttrap=option -qflttrap 追加の命令を生成し、 浮動小数点例外を検出してトラップする。
[no]fullpath -qfullpath ファイルに保管されているパス情報を dbx スタブ・ストリングに指定する。
[no]funcsect -qfuncsect 各関数ごとの命令を別個の csect に入れる。
halt -qhalt 指定された重大度のエラーが検出されると、 コンパイラーを停止する。
[no]idirfirst -qidirfirst ユーザー・組み込みファイルの検索順序を指定する。
[no]ignerrno -qignerrno システム呼び出しによって errno が変更されないと想定してコンパイラーに最適化の実行を許可する。
ignprag=option -qignprag 特定のプラグマ・ステートメントを無視するようにコンパイラーに命令する。
[no]info=option -qinfo

#pragma info も参照

通知メッセージを作成する。
initauto=value -qinitauto 指定された 16 進バイト値に自動ストレージを初期化する。
[no]inlglue -qinlglue 外部関数の呼び出しまたは関数ポインターを介した呼び出しに必要なポインター・グルー・コードをインライン化することにより、高速な外部結合を生成する。
isolated_call=names -qisolated_call

#pragma isolated_call も参照

ソース・ファイル内の副次作用がない関数を指定する。
C のみ langlvl -qlanglvl 異なる言語レベルを指定する。

このディレクティブはプリプロセッサーの振る舞いを動的に変更することができます。 その結果、-E コンパイラー・オプションを指定してコンパイルすると、-E オプションを指定してコンパイルしなかったときに作成されるものと異なる結果が作成される可能性があります。

[no]libansi -qlibansi ANSI C ライブラリー関数の名前が付いたすべての関数が実際はシステム関数であると見なす。
[no]list -qlist オブジェクト・リストを含むコンパイラー・リストを生成する。
[no]longlong -qlonglong プログラムで long long 型を許可する。
[no]maxmem=number -qmaxmem 指定した重大度以上のエラーの件数が指定数に達したらコンパイルを停止するようコンパイラーに命令する。
[no]mbcs -qmbcs、-qdbcs ストリング・リテラルとコメントには、DBCS 文字を含むことができる。
[no]optimize
optimize=number
-O、-qoptimize プログラム・コードのセクションに適用される最適化レベルを指定する。

コンパイラーは number の値として以下を受け入れます。

  • 0 - レベル 0 の最適化を設定します
  • 2 - レベル 2 の最適化を設定します
  • 3 - レベル 3 の最適化を設定します

number に値が指定されなかった場合、コンパイラーはレベル 2 の最適化を 想定します。

C++ のみ priority=number -qpriority

#pragma priority も参照

静的コンストラクターを初期化する場合の優先順位を指定する。
[no]proclocal、 [no]procimported、 [no]procunknown -qproclocal、-qprocimported、-qprocunknown 関数にローカル、インポート、または不明のマークを付ける。
C のみ [no]proto -qproto このオプションが設定されると、コンパイラーは、 すべての関数がプロトタイプ化されているものと想定する。
[no]ro -qro ストリング・リテラルのストレージ・タイプを指定する。
[no]roconst -qroconst 定数値のストレージ・ロケーションを指定する。
[no]showinc -qshowinc -q-qsource で使用された場合は、 すべての組み込みファイルをソース・リストに組み込む。
[no]source -qsource ソース・リストを作成する。
spill=number -qspill レジスター割り振り予備域のサイズを指定する。
[no]stdinc -qstdinc #include <file_name> および #include " file_name" ディレクティブで組み込むファイルを指定する。
[no]strict -qstrict プログラムのセマンティクスを変更する可能性がある -O3 コンパイラー・オプションの積極的な最適化をオフにする。
tbtable=option -qtbtable コンパイラーによって認識されるタブの長さを変更する。
tune=option -qtune 実行可能プログラムの最適化対象とするアーキテクチャーを指定する。
[no]unroll

unroll=number
-qunroll 指定した係数によってプログラムの内部ループをアンロールする。
C のみ [no]upconv -qupconv 整数拡張を行うときに符号なしの指定を保持する。
C++ のみ [no]vftable -qvftable 仮想関数テーブルの生成を制御する。
[no]xref -qxref すべての ID の相互参照リストを含むコンパイラー・リストを生成する。

関連情報