Aracılığıyla paylaş


Varsayılan İşaretçi Türleri

İşaretçilerin açık bir öznitelik açıklaması olması gerekmez. Açık bir öznitelik sağlanmadığında, MIDL Derleyicisi varsayılan işaretçi özniteliğini kullanır.

Dağıtılmamış işaretçiler için varsayılan durumlar şunlardır:

  • Parametrede görüntülenen üst düzey işaretçiler varsayılan olarak [başvuru] işaretçilerini listeler.
  • Diğer tüm işaretçiler varsayılan olarak [pointer_default] özniteliği tarafından belirtilen türe sahiptir. [pointer_default] özniteliği sağlandığında, MIDL derleyicisi DCE uyumlu moddayken MIDL derleyicisi Microsoft Uzantıları modundayken [ benzersiz ] özniteliğine veya [ptr] özniteliğine varsayılan olarak bu işaretçiler kullanılır.

Uzak yordam bir işaretçi döndürdüğünde, dönüş değeri [ benzersiz ] veya tam ([ ptr ]) işaretçisi olmalıdır.

/* 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.    
}

Açıklamalar

Kesin olmayan işaretçi özniteliği davranışı sağlamak için, işaretçiyi tanımlarken her zaman açık işaretçi özniteliklerini kullanın.

[ptr] yalnızca işaretçi diğer adı gerektiğinde kullanılması önerilir.