Deref
每個 Pre 或 Post 屬性 (Attribute) 的執行個體都會在特定的取值 (Dereference) 層級,為加註的參數和傳回值指定一組屬性 (Property)。 取值的層級由屬性 (Attribute) 的 Deref 屬性 (Property) 指定;在 Deref 屬性 (Property) 之後出現的所有屬性 (Property) 都會套用到該取值層級。 例如,指定之屬性 (attribute) 的參數 p,如果是 Deref=0,那麼會指定 p 的屬性 (Property),若 Deref=1,會指定 *p 的屬性 (Property),而 Deref=2 則會指定 **p 的屬性 (Property),以此類推。 Deref 的值應該大於或等於 0,並小於或等於 3。
注意事項 |
---|
這個屬性的預設值為 0。 |
例如,對參考型別 (Reference Type) 的參數 int& r 而言,Deref=0 會套用至參考本身,而 Deref=1 會套用至所參考的位置,在這個情況中即為 int。
範例
下列程式碼會指定 Deref=1,它會將 Access 屬性套用至指標所指向的緩衝區。
// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ( [ SA_Pre ( Deref = 1, Access = SA_ReadWrite ) ] char *p );
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f ( [ Pre ( Deref = 1, Access = ReadWrite ) ] char *p );