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]]
, ...);
-
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.
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.
[unique] char * GetFirstName(
[in, ref] char * pszFullName);