指定套用註釋的時機和位置

當批註是條件式時,可能需要其他注釋來指定分析器的附注。 例如,如果函式的變數可以是同步或非同步,函式的行為會如下所示:在同步的情況下,它一律會成功,但是在非同步情況下,它會在無法立即成功時報告錯誤。 以同步方式呼叫函式時,檢查結果值不會對程式碼分析器提供任何值,因為它不會傳回。 不過,當以非同步方式呼叫函式並不檢查函數結果時,可能會發生嚴重的錯誤。 此範例說明您可以使用 _When_ 批註的情況(如本文稍後所述),以啟用檢查。

結構化批註

若要控制批註套用的時機和位置,請使用下列結構化批註。

Annotation Description
_At_(expr, anno-list) expr 這是會產生左值的運算式。 中 anno-list 的注釋會套用至由 expr 命名的物件。 針對中 anno-list 的每個批註, expr 如果批註是在前置條件中轉譯,則會在前置條件中解讀,如果批註是在後置條件中解釋,則為。
_At_buffer_(expr, iter, elem-count, anno-list) expr 這是會產生左值的運算式。 中 anno-list 的注釋會套用至由 expr 命名的物件。 針對中 anno-list 的每個批註, expr 如果批註是在前置條件中解讀,則會在前置條件中解讀,如果批註是在後置條件中解讀則為。

iter 這是範圍設定為注釋 (包含 anno-list) 之變數的名稱。 iter 具有隱含類型 long 。 任何封入範圍中同名的變數都不會進行評估。

elem-count 這是評估為整數的運算式。
_Group_(anno-list) anno-list 的批註全都被視為具有適用于每個批註之群組注釋的任何限定詞。
_When_(expr, anno-list) expr 這是可以轉換為 bool 的運算式。 當) 為非零 (true 時,中 anno-list 指定的注釋會被視為適用。

根據預設,如果批註是前置條件,則會將中 anno-listexpr 的每個注釋轉譯為使用輸入值,並在批註為後置條件時使用輸出值。 若要覆寫預設值,您可以在評估後置條件時使用 _Old_ 內建,以指出應該使用輸入值。 注意: 使用時,可能會因為使用 _When_ 可變動的值(例如, *pLength )而啟用不同的注釋,因為先決條件的評估結果 expr 可能與後續條件中的評估結果不同。

另請參閱