Delen via


Drie aanwijzertypen

MIDL ondersteunt drie soorten aanwijzers voor een breed scala aan toepassingen. De drie verschillende niveaus worden verwijzingen, unieke en volledige aanwijzers genoemd en worden aangegeven door de kenmerken [ref], [unieke], en [ptr], respectievelijk. De aanwijzerklassen die door deze kenmerken worden beschreven, sluiten elkaar wederzijds uit. Aanwijzerkenmerken kunnen worden toegepast op aanwijzers in typedefinities, functie-retourtypen, functieparameters, leden van structuren of samenvoegingen of matrixelementen.

Ingesloten aanwijzers zijn aanwijzers die lid zijn van structuren of vakbonden. Ze kunnen ook elementen van matrices zijn. In de [in] richting, worden ingesloten [verw] aanwijzers geacht naar geldige opslag te verwijzen en mogen deze niet null zijn. Deze situatie is recursief van toepassing op alle [ref] aanwijzers die ze aanwijzen. In de [in] richting kunnen ingesloten [uniek] en volledige aanwijzers (aanwijzers met het kenmerk [ptr]) null zijn.

Elk aanwijzerkenmerk dat op een parameter in de syntaxis van een functiedeclaratie wordt geplaatst, is alleen van invloed op de meest rechtse aanwijzerdeclaratie voor die parameter. Als u andere aanwijzerdeclaraties wilt beïnvloeden, moeten tussenliggende benoemde typen worden gebruikt.

Functies die een aanwijzer retourneren, kunnen een kenmerk van de aanwijzer hebben als functiekenmerk. De [uniek] en [ptr] kenmerken moeten worden toegepast op functie-retourtypen. Ledendeclaraties die aanwijzers zijn, kunnen een kenmerk aanwijzer opgeven als veldkenmerk. Een aanwijzerkenmerk kan ook worden toegepast als een typekenmerk in typedef constructies.

Wanneer er geen aanwijzerkenmerk is opgegeven als een veld- of typekenmerk, worden aanwijzerkenmerken als volgt toegepast op basis van de regels voor een niet-toegewezen aanwijzerdeclaratie.

In de DCE-compatibiliteitsmodus worden aanwijzerkenmerken bepaald in het definiëren van het IDL-bestand. Als er een [pointer_default**]**kenmerk is opgegeven in de definitie-interface, wordt dat kenmerk gebruikt. Als er geen [pointer_default] kenmerk aanwezig is, zijn alle niet-toegewezen aanwijzers volledige aanwijzers.

In de microsoft-uitbreidingsmodus kunnen aanwijzerkenmerken worden bepaald door IDL-bestanden te importeren en in de volgende volgorde toe te passen:

  1. Een expliciet aanwijzerkenmerk dat is toegepast op de use-site.
  2. Het kenmerk [verw], wanneer de niet-toegewezen aanwijzer een parameter op het hoogste niveau is.
  3. Een [pointer_default] kenmerk dat is opgegeven in de definitie-interface.
  4. Een [pointer_default] kenmerk dat is opgegeven in de basisinterface.
  5. Het kenmerk [uniek].

De [pointer_default] interfacekenmerk specificeert de standaardaanwijzerkenmerken die moeten worden toegepast op een aanwijzerdeclaratie in een type, parameter of retourtypedeclaratie wanneer er geen expliciet aanwijzerkenmerk op is toegepast. De [pointer_default] interfacekenmerk is niet van toepassing op een niet-toegewezen aanwijzer op het hoogste niveau van een parameter, die wordt verondersteld te worden [verw].