Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukazatele nemusí mít explicitní popis atributu. Pokud není zadaný explicitní atribut, kompilátor MIDL používá výchozí atribut ukazatele.
Výchozí případy pro nepřipojené ukazatele jsou následující:
- Ukazatele nejvyšší úrovně, které se zobrazují v seznamech parametrů, mají výchozí hodnotu [odkaz] ukazatelů.
- Všechny ostatní ukazatele jsou výchozí pro typ určený atributem [pointer_default]. Pokud není zadán atribut [pointer_default], jsou tyto ukazatele výchozí atribut [ jedinečný ] v případě, že kompilátor MIDL je v režimu rozšíření Microsoft Extensions nebo [ptr] atribut, pokud je kompilátor MIDL v režimu kompatibilním s DCE.
Pokud vzdálený postup vrátí ukazatel, návratová hodnota musí být [ jedinečný ] nebo úplný ([ ptr ]).
/* 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.
}
Poznámky
Pokud chcete zajistit jednoznačné chování atributu ukazatele, vždy při definování ukazatele používejte explicitní atributy ukazatele.
Doporučujeme použít [ptr] pouze v případě, že je vyžadován aliasování ukazatele.