-qformat

説明

ストリング入力および出力フォーマットの指定で考えられる問題について警告する。 診断される関数は printfscanfstrftimestrfmon ファミリー関数とフォーマット属性でマークが付けられた関数です。

構文

構文図を読む構文図をスキップする   .- -qnoformat---------------------------------.
   +- -qformat--=--noall-------------------------+
   |            .-=--all-----------------------. |
>>-+- -qformat--+------------------------------+-+-------------><
                |      .-:-----------------.   |
                |      V                   |   |
                '-=------+----+--+-all---+-+---'
                         '-no-'  +-exarg-+
                                 +-nlt---+
                                 +-sec---+
                                 +-y2k---+
                                 '-zln---'
 

サブオプションは以下の通りです。

all すべてのフォーマット診断メッセージをオンにします。
exarg printf および scanf スタイル関数呼び出しに余分な引数が指定された場合、警告を出します。
nlt フォーマット・ストリングがストリング・リテラルでない場合、フォーマット関数が va_list としてそのフォーマット引数を取らない場合を除き、警告を出します。
sec フォーマット関数の使用において考えられるセキュリティー上の問題について警告を出します。
y2k 2 桁の年を作成する strftime フォーマットについて警告を出します。
zln ゼロの長さのフォーマットについて警告を出します。
注:
前述のいずれかのサブオプションの前に no を指定すると、その診断メッセージのグループが使用不可になります。例えば、y2k 警告の診断メッセージをオフにするには、コマンド行に -qformat=noy2k と指定します。

-qformat がコマンド行に指定されていない 場合は、コンパイラーはデフォルト設定 -qnoformat を想定します。これは -qformat=noall と同等です。

-qformat がサブオプションなしでコマンド行に指定されていると、コンパイラーはデフォルト設定 -qformat=all を想定します。

  1. すべてのフォーマット・ストリング診断を使用可能にするには、次のいずれかを入力してください。

    xlc++ myprogram.C -qformat=all
    xlc++ myprogram.C -qformat
  2. y2k の日付の診断を除き、すべてのフォーマット検査を使用可能にするには、以下のように入力してください。
    xlc++ myprogram.C -qformat=all:noy2k

関連情報