関数の動作に注釈を付ける
関数のパラメーターと戻り値の注釈に加えて、全体の関数のプロパティに注釈を付けることができます。
関数のコメント
次のコメント、全体として関数に適用され、どのようにする場合は。が true であると想定する方法について説明します。
注釈 |
説明 |
---|---|
_Called_from_function_class_(name) |
単独でするためのものではありません; 代わりに、_When_ のコメントで使用する述語です。詳細については、「注釈を適用するタイミングと場所の指定」を参照してください。 name のパラメーターは、関数の申告の _Function_class_ のコメントに表示される任意の文字列です。_Called_from_function_class_ は、現在分析対象の関数が _Function_class_ の nameの同じ値を持つ使用して、注釈される場合を返します; それ以外の場合は、ゼロを返します。 |
_Check_return_ |
戻り値に注釈を、呼び出し元が確認が必要であることを示します。チェッカーは、関数が無効のコンテキストで呼び出されるとエラーを報告します。 |
_Function_class_(name) |
name のパラメーターは、ユーザーによって指定された任意の文字列です。そのほかの名前空間から明確な名前空間にあります。関数、関数ポインター、または最も usefully-a の関数ポインター型は一つ以上の関数のクラスに属するとしてマークすることもあります。 |
_Raises_SEH_exception_ |
例外ハンドラーの (SEH) の構造化例外を常に発生 _When_ と _On_failure_ の状態に応じて関数を指定します。詳細については、「注釈を適用するタイミングと場所の指定」を参照してください。 |
_Maybe_raises_SEH_exception_ |
必要に応じて、例外を親の可能性がある _When_ と _On_failure_ の状態に応じて関数を指定します。 |
_Must_inspect_result_ |
戻り値、およびグローバル パラメーターを含む出力値を、注釈します。アナライザーは注釈先オブジェクトの値に従って検査するエラーを報告します。"チェックは" 条件式で使用される、出力パラメーターまたはグローバルに再配置があります。また、パラメーターとして実行するか渡されます。戻り値のは、_Must_inspect_result_ は _Check_return_を意味します。 |
_Use_decl_annotations_ |
ヘッダーにコメントの一覧の代わりに定義関数 (または関数本体) で使用されるがあります。_Use_decl_annotations_ を使用すると、同じ関数のスコープ内のヘッダーに表示されるコメントは _Use_decl_annotations_ のコメントのあるシグネチャにあるように使用されます。 |
成功または失敗のコメント
関数が失敗することがありますと関数が成功すると、結果が不完全である場合や、結果とは異なる場合があります。次の一覧にコメントがエラーの動作を表現する方法を示します。これらのコメントを使用するには、成功を決定することができるようにする必要があります。; したがって、_Success_ のコメントが必要です。NTSTATUS と HRESULT には既ににビルド _Success_ のコメントがあることに注意してください; ただし、NTSTATUS か HRESULTで _Success_ の独自のコメントを指定した場合は、組み込みのコメントをオーバーライドします。
注釈 |
説明 |
---|---|
_Always_(anno_list) |
anno_list _On_failure_(anno_list)と同じ; つまり、anno_list のコメントは、関数が成功するかどうかを適用します。 |
_On_failure_(anno_list) |
関数またはを明示的に指定するには _Success_ も使用されている場合にのみ、typedef の _Return_type_success_ で使用するには、または暗黙的に使用します。_On_failure_ のコメントが関数パラメーターまたは戻り値にときに、anno) の各コメントは anno_listexpr が _Success_ の必要なコメントにパラメーターである、_When_(!expr, anno)として、コード化されたようにします。これは、すべての後の要件への _Success_ の暗黙的なアプリケーションが _On_failure_に適用されないことを意味します。 |
_Return_type_success_(expr) |
typedef に適用されるがあります。_Success_(expr)があるかのようにその型を返し、明示的に _Success_ がないすべての関数が指定されていることを示します。_Return_type_success_ は、関数または関数ポインターの typedef で使用することはできません。 |
_Success_(expr) |
expr は、rvalue を生成する式です。_Success_ のコメントは関数宣言または関数定義と、_When_(expr, anno)としてコードされている関数の要件と後の各コメント (anno) はします。_Success_ のコメントは、パラメーターまたは戻り型の関数でのみ、使用される場合があります。関数に最大で _Success_ の 1 種類のコメントがあり、_When_、_At_、または _Group_にすることはできません。詳細については、「注釈を適用するタイミングと場所の指定」を参照してください。 |