Bagikan melalui


[in, out, string] Prototipe

Prototipe fungsi berikut menggunakan parameter [in, out, string] tunggal untuk string input dan output. String pertama kali berisi input pasien dan kemudian ditimpa dengan respons dokter seperti yang ditunjukkan:

void Analyze([in, out, string, size_is(STRSIZE)] char  achInOut[]);

Contoh ini mirip dengan yang menggunakan string hitungan tunggal untuk input dan output. Seperti contoh tersebut, atribut [size_is] menentukan jumlah elemen yang dialokasikan di server. Atribut [string] mengarahkan stub untuk memanggil strlen untuk menentukan jumlah elemen yang ditransmisikan.

Klien mengalokasikan semua memori sebelum panggilan sebagai:

/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE);            // get patient input
Analyze(achInOut);
printf("%s\n", achInOut);  // display doctor response

Perhatikan bahwa fungsi Analisis tidak lagi harus menghitung panjang string pengembalian seperti yang terjadi dalam contoh counted-string di mana atribut [string] tidak digunakan. Sekarang stub menghitung panjang seperti yang ditunjukkan:

/* server */
void Analyze(char *pchInOut)
{
   ...
   Respond(response, pchInOut); // don't need to call strlen
   return;                      // stubs handle size
}