atribut string
Atribut [string] menunjukkan bahwa array karakter satu dimensi, wchar_t, byte (atau setara) atau penunjuk ke array tersebut harus diperlakukan sebagai string. String juga dapat berupa array (atau penunjuk ke array) konstruksi yang semua bidangnya adalah byte jenis.
typedef [ string [[ , type-attribute-list ]] ] type-specifier declarator-list;
typedef [ struct | union ]
{
[ string [[ , field-attribute-list ]] ] type-specifier declarator-list;
...
};
[ string [[ , function-attribute-list ]] ] type-specifier ptr-decl function-name(
[[ [ parameter-attribute-list ] ]] type-specifier [[standard-declarator]]
, ...);
[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
[ string [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
, ...);
Parameter
-
type-attribute-list
-
Menentukan satu atau beberapa atribut yang berlaku untuk jenis. 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, jenisstruct , atau pengidentifikasi jenis. Spesifikasi penyimpanan opsional dapat mendahului type-specifier.
-
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. Dua atribut bidang yang valid adalah [max_is] dan [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 nol atau lebih atribut 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 deklarator penunjuk opsional tempat atribut [string] diterapkan. Deklarator penunjuk sama dengan deklarator penunjuk yang digunakan dalam C; ini dibangun dari * penunjuk, pengubah seperti jauh, dan konstan 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 [max_is] dan [size_is]; atribut pointer [ref], [unique], atau [ptr]; dan atribut penggunaan [context_handle] dan [string]. Atribut penggunaan [ignore] tidak dapat digunakan sebagai atribut parameter. Pisahkan beberapa atribut dengan koma.
Keterangan
Jika atribut [string] digunakan dengan array yang batasnya ditentukan pada durasi, Anda juga harus menentukan atribut [size_is] atau [max_is] , seperti dalam contoh berikut:
/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];
Atribut [string] tidak dapat digunakan dengan atribut yang menentukan rentang elemen yang ditransmisikan, seperti [first_is], [last_is], dan [length_is].
Ketika digunakan pada array multidimensi, atribut [string] berlaku untuk array paling kanan.
Untuk menentukan string yang dihitung, jangan gunakan atribut [string] . Gunakan array karakter atau penunjuk berbasis karakter seperti berikut ini:
typedef struct
{
unsigned short size;
unsigned short length;
[size_is(size), length_is(length)] char string[*];
} counted_string;
Atribut [string] menentukan bahwa stub harus menggunakan metode yang disediakan bahasa untuk menentukan panjang string.
Saat mendeklarasikan string dalam C, Anda harus mengalokasikan spasi untuk karakter tambahan yang menandai akhir string.
Contoh
/* a string type that can hold up to 80 characters */
typedef [string] char line[81];
HRESULT Proc1([in, string] char * pszName);
Lihat juga