atribut ref

Atribut [ref] mengidentifikasi penunjuk referensi. Ini digunakan hanya untuk mewakili tingkat tidak langsung.

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

Menentukan satu atau beberapa atribut yang berlaku untuk jenis tersebut. Atribut jenis yang valid termasuk [handle], [switch_type], [transmit_as]; atribut pointer [ref], [unique], atau [ptr]; dan atribut penggunaan [context_handle], [string], dan [abaikan]. Pisahkan beberapa atribut dengan koma.

type-specifier

Menentukan jenis dasar, struct, union, atau jenis enum atau pengidentifikasi jenis. Spesifikasi penyimpanan opsional dapat mendahului penentu jenis.

deklarator standar

Menentukan deklarator C standar, seperti pengidentifikasi, deklarator penunjuk, atau deklarator array. Untuk informasi selengkapnya, lihat Array dan Sized-Pointer Atribut, array, dan Array dan Pointer.

daftar deklarator

Menentukan deklarator C standar, seperti pengidentifikasi, deklarator pointer, dan deklarator array. Untuk informasi selengkapnya, lihat Array dan Sized-Pointer Atribut, array, dan Array dan Pointer. Daftar deklarator terdiri dari satu atau beberapa deklarator yang dipisahkan oleh koma. Pengidentifikasi nama parameter dalam deklarator fungsi bersifat opsional.

field-attribute-list

Menentukan atribut bidang nol atau lebih yang berlaku untuk struktur, anggota serikat, atau parameter fungsi. Atribut bidang yang valid meliputi [first_is], [last_is], [length_is], [max_is], [size_is]; atribut penggunaan [string], [ignore], dan [context_handle]; atribut pointer [ref], [unique], atau [ptr]; dan atribut union [switch_type]. Pisahkan beberapa atribut bidang dengan koma.

function-attribute-list

Menentukan atribut nol atau lebih yang berlaku untuk fungsi. Atribut fungsi yang valid adalah [callback], [local]; atribut pointer [ref], [unique], atau [ptr]; dan atribut penggunaan [string], [abaikan], dan [context_handle].

ptr-decl

Menentukan setidaknya satu deklarator pointer tempat atribut [ref] berlaku. Deklarator pointer sama dengan deklarator penunjuk yang digunakan dalam C; ini dibangun dari penunjuk * , pengubah seperti jauh, dan konsekuensi kualifikasi.

nama fungsi

Menentukan nama prosedur jarak jauh.

parameter-attribute-list

Terdiri dari nol atau lebih atribut yang sesuai untuk jenis parameter yang ditentukan. Atribut parameter dapat mengambil atribut arah [in] dan [out]; atribut bidang [first_is], [last_is], [length_is], [max_is], [size_is], dan [switch_type]; atribut pointer [ref], [unique], atau [ptr]; dan atribut penggunaan [context_handle] dan [string]. Atribut penggunaan [abaikan] tidak dapat digunakan sebagai atribut parameter. Pisahkan beberapa atribut dengan koma.

Keterangan

Atribut pointer dapat diterapkan sebagai atribut jenis, sebagai atribut bidang yang berlaku untuk anggota struktur, anggota serikat pekerja, atau parameter; atau sebagai atribut fungsi yang berlaku untuk jenis pengembalian fungsi. Atribut pointer juga dapat muncul dengan kata kunci [pointer_default] .

Penunjuk referensi memiliki karakteristik berikut:

  • Selalu menunjuk ke penyimpanan yang valid; tidak pernah memiliki nilai NULL. Penunjuk referensi selalu dapat didereferensikan.
  • Jangan pernah berubah selama panggilan. Penunjuk referensi selalu menunjuk ke penyimpanan yang sama pada klien sebelum dan sesudah panggilan.
  • Tidak mengalokasikan memori baru pada klien. Data yang dikembalikan dari server ditulis ke penyimpanan yang ada yang ditentukan oleh nilai penunjuk referensi sebelum panggilan.
  • Tidak menyebabkan alias. Penyimpanan yang diacu oleh penunjuk referensi tidak dapat dicapai dari nama lain dalam fungsi.

Penunjuk referensi tidak dapat digunakan sebagai jenis penunjuk yang dikembalikan oleh fungsi.

Jika tidak ada atribut yang ditentukan untuk parameter penunjuk tingkat atas, atribut tersebut diperlakukan sebagai penunjuk referensi.

Contoh

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

Lihat juga

Array

Array dan Pointer

Atribut Array dan Sized-Pointer

Jenis Dasar MIDL

Callback

const

context_handle

Enum

first_is

Menangani

Mengabaikan

last_is

length_is

Lokal

max_is

Out ekspres

Ptr

size_is

string

struktur

switch_type

transmit_as

union

Unik