Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Pekare krävs inte för att ha en explicit attributbeskrivning. När ett explicit attribut inte anges använder MIDL-kompilatorn ett standardpekarattribut.
Standardfallen för icke-distribuerade pekare är följande:
- Pekare på den översta nivån som visas i parameterlistor är som standard [referens] pekare.
- Alla andra pekare är standardtypen som anges av attributet [pointer_default] . När inget [pointer_default] -attribut anges är dessa pekare standardattributet [ unikt ] när MIDL-kompilatorn är i Microsoft-tillägg läge eller attributet [ptr] när MIDL-kompilatorn är i DCE-kompatibelt läge.
När en fjärrprocedur returnerar en pekare måste returvärdet vara en [ unik ] eller fullständig ([ ptr ]) pekare.
/* IDL file compiled without /osf */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0),
pointer_default(ptr)
]
interface MyInterface
{
typedef long *PLONG;
struct MyCircularList {
struct MyCircularList *pRight;
struct MyCircularList *pLeft;
long Data;
};
void Foo1( [in] PLONG p ); // p is ref
void Foo2( [in] struct MyCircularList *p ); // p is ref, p->pRight and p->pLeft is ptr
struct MyCircularList *Foo3( void ); // returned pointer is ptr.
}
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea46),
version(1.0)
]
interface MyInterface2
{
struct MySingleList
{
struct MySingleList *pNext;
long Data;
};
void Foo4( [in] struct MySingleList *p ); // p is ref, p->pNext is unique
struct MySingleList *Foo5( void ); // returned pointer is unique.
}
Anmärkningar
Använd alltid explicita pekarattribut när du definierar en pekare för att säkerställa ett entydigt beteende för pekarattribut.
Vi rekommenderar att [ptr] endast används när pekaralias krävs.