Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
}