Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Следующий прототип функции использует один параметр [в, , строк] для входных и выходных строк. Строка сначала содержит входные данные пациента и затем перезаписывается с помощью ответа врача, как показано ниже.
void Analyze([in, out, string, size_is(STRSIZE)] char achInOut[]);
Этот пример аналогичен тому, который использовал одночисленную строку для входных и выходных данных. Как и в этом примере, атрибут [size_is] определяет количество элементов, выделенных на сервере. Атрибут [строка] направляет заглушку для вызова strlen для определения количества передаваемых элементов.
Клиент выделяет всю память перед вызовом следующим образом:
/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE); // get patient input
Analyze(achInOut);
printf("%s\n", achInOut); // display doctor response
Обратите внимание, что функция анализа больше не должна вычислять длину возвращаемой строки, как это было в примере с подсчетом строк, где атрибут [string] не использовался. Теперь заглушки вычисляют длину, как показано ниже.
/* server */
void Analyze(char *pchInOut)
{
...
Respond(response, pchInOut); // don't need to call strlen
return; // stubs handle size
}