Udostępnij przez


[in, out, string] Prototyp

Poniższy prototyp funkcji używa pojedynczego parametru [w, ciągu] zarówno dla ciągów wejściowych, jak i wyjściowych. Ciąg najpierw zawiera dane wejściowe pacjenta, a następnie jest zastępowany odpowiedzią lekarza, jak pokazano poniżej:

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

Ten przykład jest podobny do tego, który zastosował jednolicie zliczany ciąg zarówno dla danych wejściowych, jak i wyjściowych. Podobnie jak w tym przykładzie, atrybut [size_is] określa liczbę elementów przydzielonych na serwerze. Atrybut [string] kieruje wycinkę w celu wywołania strlen w celu określenia liczby przesłanych elementów.

Klient przydziela całą pamięć przed wywołaniem jako:

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

Należy pamiętać, że funkcja Analyze nie musi już obliczyć długości ciągu zwracanego, jak to miało miejsce w przykładzie zliczonym ciągu, w którym atrybut [ciąg] nie był używany. Teraz wycinki obliczają długość, jak pokazano poniżej:

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