指定套用註釋的時機和位置
當批注有條件時,可能需要其他批注來指定給分析器。 例如,如果函式的變數可以是同步或異步,則函式的行為如下:在同步案例中,它一律會成功,但在異步案例中,如果無法立即成功,則會報告錯誤。 以同步方式呼叫函式時,檢查結果值不會為程式代碼分析器提供任何值,因為它不會傳回。 不過,當以異步方式呼叫函式且未檢查函式結果時,可能會發生嚴重的錯誤。 此範例說明您可以使用 _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 不同。 |