ref-Attribut

Das [ref] -Attribut identifiziert einen Verweiszeiger. Es wird einfach verwendet, um eine Dereferenzierungsebene darzustellen.

pointer_default(ref)

typedef [ ref [[ , type-attribute-list ]] ] type-specifier declarator-list; 

typedef [ struct | union ] 
{
    [ ref [[ , field-attribute-list ]] ] type-specifier declarator-list;
    ...}

[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
    [ ref [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
    , ...);

Parameter

type-attribute-list

Gibt mindestens ein Attribut an, das für den Typ gilt. Gültige Typattribute sind [handle], [switch_type], [transmit_as]; die Zeigerattribute [ref], [eindeutig] oder [ptr]; und die Verwendungsattribute [context_handle], [Zeichenfolge] und [ignorieren]. Trennen Sie mehrere Attribute durch Kommas.

Typspezifizierer

Gibt einen Basistyp, eine Struktur, einen Union- oder Enumerationstyp oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.

Standarddeklarator

Gibt einen C-Standard-Deklarator an, z. B. einen Bezeichner, einen Zeiger-Deklarator oder einen Array-Deklarator. Weitere Informationen finden Sie unter Array- und Sized-Pointer Attribute, Arrays und Arrays und Zeiger.

deklarator-list

Gibt Standard-C-Deklaratoren an, z. B. Bezeichner, Zeiger-Deklaratoren und Array-Deklaratoren. Weitere Informationen finden Sie unter Array- und Sized-Pointer Attribute, Arrays und Arrays und Zeiger. Die Deklaratorliste besteht aus einem oder mehreren Deklaratoren, die durch Kommas getrennt sind. Der Parameternamebezeichner im Funktionsdeklarator ist optional.

field-attribute-list

Gibt null oder mehr Feldattribute an, die für die Struktur, den Union-Member oder den Funktionsparameter gelten. Gültige Feldattribute sind [first_is], [last_is], [length_is], [max_is], [size_is]; die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle]; das Zeigerattribute [ref], [unique] oder [ptr]; und das Union-Attribut [switch_type]. Trennen Sie mehrere Feldattribute durch Kommas.

function-attribute-list

Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [Rückruf], [lokal]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle].

ptr-decl

Gibt mindestens einen Zeigerdeklarator an, für den das [ref] -Attribut gilt. Ein Zeigerdeklarations-Deklarator ist mit dem in C verwendeten Zeiger-Deklarator identisch. es wird aus dem *-Designator, Modifizierern wie far und dem Qualifizierer const erstellt.

Funktionsname

Gibt den Namen der Remoteprozedur an.

parameter-attribute-list

Besteht aus null oder mehr Attributen, die für den angegebenen Parametertyp geeignet sind. Parameterattribute können die Richtungsattribute [in] und [out]; die Feldattribute [first_is], [last_is], [length_is], [max_is], [size_is] und [switch_type]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Nutzungsattribute [context_handle] und [Zeichenfolge]. Das Verwendungsattribut [ignore] kann nicht als Parameterattribute verwendet werden. Trennen Sie mehrere Attribute durch Kommas.

Bemerkungen

Ein Zeigerattribute kann als Typattribute als Feldattribute angewendet werden, das für ein Strukturelement, ein Unionmitglied oder einen Parameter gilt. oder als Funktionsattribute, das für den Funktionsrückgabetyp gilt. Das Zeigerattribute kann auch mit dem [pointer_default] Schlüsselwort (keyword) angezeigt werden.

Ein Verweiszeiger weist die folgenden Merkmale auf:

  • Verweist immer auf gültigen Speicher; hat nie den Wert NULL. Ein Verweiszeiger kann immer abgeleitet werden.
  • Ändert sich während eines Anrufs nie. Ein Verweiszeiger verweist immer auf denselben Speicher auf dem Client vor und nach dem Aufruf.
  • Weist keinen neuen Arbeitsspeicher auf dem Client zu. Vom Server zurückgegebene Daten werden in den vorhandenen Speicher geschrieben, der durch den Wert des Verweiszeigers vor dem Aufruf angegeben wird.
  • Führt nicht zu Aliasing. Der Speicher, auf den ein Verweiszeiger verweist, kann von keinem anderen Namen in der Funktion erreicht werden.

Ein Verweiszeiger kann nicht als Typ eines Zeigers verwendet werden, der von einer Funktion zurückgegeben wird.

Wenn kein Attribut für einen Zeigerparameter der obersten Ebene angegeben wird, wird es als Verweiszeiger behandelt.

Beispiele

[unique] char * GetFirstName( 
    [in, ref] char * pszFullName);

Weitere Informationen

Arrays

Arrays und Zeiger

Array- und Sized-Pointer attribute

MIDL-Basistypen

Rückruf

const

context_handle

Enum

first_is

Behandeln

Ignorieren

last_is

length_is

lokal

max_is

out

Ptr

size_is

Schnur

Struktur

switch_type

transmit_as

union

Einzigartige