Sdílet prostřednictvím


[in, out, string] Prototyp

Následující prototyp funkce používá jeden parametr [v, ven, řetězcový] pro vstupní i výstupní řetězce. Řetězec nejprve obsahuje vstup pacienta a pak se přepíše odpovědí lékaře, jak je znázorněno:

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

Tento příklad je podobný tomu, který pro vstup i výstup použil řetězec s jedním počtem. Stejně jako v tomto příkladu určuje atribut [size_is] počet prvků přidělených na serveru. Atribut [řetězec] směruje zástupný znak volání strlen k určení počtu přenášených prvků.

Klient přidělí veškerou paměť před voláním jako:

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

Všimněte si, že funkce Analyze už nesmí vypočítat délku návratového řetězce, jako tomu bylo v příkladu počítaného řetězce, kde nebyl použit atribut [string]. Nyní zástupné procedury vypočítají délku, jak je znázorněno:

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