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

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

結構批註

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

註釋 描述
_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-list 注釋, expr 如果注釋是前置條件,則會解譯為使用輸入值,如果批註是後置條件,則會使用輸出值。 若要覆寫預設值,您可以在評估後置條件時使用 _Old_ 內建函式,以指出應該使用輸入值。 注意: 如果涉及可變值 *pLength ,可能會啟用 _When_ 不同的注釋,因為前置條件中評估的結果可能與條件後評估的結果 expr 不同。

另請參閱