次の方法で共有


関数の動作に注釈を付ける

関数のパラメーターと戻り値の注釈に加えて、全体の関数のプロパティに注釈を付けることができます。

関数のコメント

次のコメント、全体として関数に適用され、どのようにする場合は。が 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_にすることはできません。詳細については、「注釈を適用するタイミングと場所の指定」を参照してください。

参照

関連項目

関数パラメーターおよび戻り値の注釈設定

構造体とクラスに注釈を付ける

ロック動作に注釈を付ける

注釈を適用するタイミングと場所の指定

組み込み関数

ベスト プラクティスと例 (SAL)

概念

SAL について

その他の技術情報

SAL 注釈を使って C/C++ のコード障害を減らす方法