#pragma report

C++ のみ

説明

#pragma report ディレクティブは、特定のメッセージの生成を制御します。 このプラグマは #pragma info に優先します。 #pragma report(pop) を指定すると、レポート・レベルは前のレベルに戻されます。 前のレポート・レベルが指定されていない場合は、警告が表示され、レポート・レベルは変更されません。

構文

構文図を読む構文図をスキップする>>-#--pragma--report--(--+-level--,--+-E-+----------------+--)-><
                         |           +-W-+                |
                         |           '-I-'                |
                         +-+-enable--+--,--message_number-+
                         | '-disable-'                    |
                         '-pop----------------------------'
 

ここで、

レベル 表示する診断メッセージの最小の重大度レベルを示します。
E | W | I 表示する診断メッセージのタイプを決定するために level と共に使用されます。
E
「エラー」の最小のメッセージ重大度を示します。これは診断メッセージの最も重大なタイプと考えられます。「E」のレポート・レベルは、「エラー」メッセージだけ表示します。 レポート・レベルを「E」に設定する代わりの方法は、-qflag=e:e コンパイラー・オプションを指定することです。
W
「警告」の最小のメッセージ重大度を示します。「W」のレポート・レベルはフィルタリングして通知メッセージをすべて表示しないようにし、警告メッセージまたはエラー・メッセージに分類されたメッセージだけを表示します。 レポート・レベルを「W」に設定する代わりの方法は、-qflag=w:w コンパイラー・オプションを指定することです。
I
「通知」の最小のメッセージ重大度を示します。 通知メッセージは、最も重大度の低い診断メッセージであると考えられます。 レベル「I」はすべてのタイプのメッセージを表示します。 コンパイラーはこれをデフォルト・オプションとして設定します。 レポート・レベルを「I」に設定する代わりの方法は、-qflag=i:i コンパイラー・オプションを指定することです。
enable | disable 指定されたメッセージ番号を使用可能または使用不可にします。
message_number メッセージ番号のプレフィックスが含まれた ID で、この後にメッセージ番号が続きます。 メッセージ番号の例: CPPC1004
pop レポート・レベルを前のレポート・レベルにリセットします。 ポップ操作が空のスタックに対して実行されると、レポート・レベルは未変更のままとなり、メッセージは生成されません。

  1. #pragma info の指定は、コンパイラーにすべての通知診断をプリントするよう命令します。プラグマ・レポートはコンパイラーに、重大度「W」または警告メッセージのメッセージだけを表示するよう命令します。 この場合、通知診断はまったく表示されません。
    1  #pragma info(all)
    2  #pragma report(level, W)
  2. CPPC1000 がエラー・メッセージであった場合、表示されます。 別のタイプの診断メッセージの場合は表示されません。
    1  #pragma report(enable, CPPC1000)  // enables message number CPPC1000
    2  #pragma report(level, E)	  // display only error messages. 
    次のようにコードの順序を変更すると、
    1  #pragma report(level, E)
    2  #pragma report(enable, CPPC1000)
    同じ結果になります。コードの 2 つの行が表示される順序は、結果に影響しません。 ただし、メッセージが「使用不可」であった場合は、設定されているレポート・レベルやコードの行の表示順序に関係なく、診断メッセージは表示されません。
  3. 下記の例の 1 行目で、初期のレポート・レベルは「I」に設定されており、 分類されている診断メッセージのタイプに関係なく、メッセージ CPPC1000 が表示されています。 3 行目には、新しいレポート・レベル「E」が設定され、重大度レベル「E」のメッセージだけが表示されることを示しています。3 行目のすぐ後に、現行レベル「E」が「ポップ」して、「I」にリセットされています。
    1  #pragma report(level, I)
    2  #pragma report(enable, CPPC1000)
    3  #pragma report(level, E)
    4  #pragma report(pop)

関連情報