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

Array

Jenis Dasar MIDL

Callback

Char

const

context_handle

Enum

first_is

Menangani

File Definisi Antarmuka (IDL)

Mengabaikan

last_is

length_is

Lokal

max_is

pointer_default

Ptr

Ref

size_is

struktur

switch_type

transmit_as

union

Unik

wchar_t