Атрибуты массивов
Существует тесная связь между массивами и указателями в языке C. При передаче в качестве параметра функции имя массива обрабатывается как указатель на первый элемент массива, как показано в следующем примере:
/* fragment */
extern void f1(char * p1);
void main(void)
{
char chArray[MAXSIZE];
fLocal1(chArray);
}
В локальном вызове можно использовать параметр указателя для прохода по памяти и просмотра содержимого других адресов:
/* dump memory (fragment) */
void fLocal1(char * pch1)
{
int i;
for (i = 0; i < MAXSIZE; i++)
printf("%c ", *pch1++);
}
Когда клиент передает указатель на удаленную процедуру, заглушка клиента передает указатель и данные, на которые он указывает. Если указатель не ограничен соответствующими данными, вся память клиента должна передаваться при каждом удаленном вызове. Применяя строгий ввод в определении интерфейса, MIDL ограничивает обработку заглушки клиента данными, соответствующими указанному указателю.
Размер массива и диапазон элементов массива, передаваемых на удаленный компьютер, могут быть постоянными или переменными. Если эти значения являются переменными и определяются во время выполнения, необходимо использовать атрибуты в IDL-файле, чтобы указать количество передаваемых элементов массива. Следующие атрибуты MIDL поддерживают границы массива.
attribute | Описание | По умолчанию |
---|---|---|
[ first_is] | Индекс первого переданного элемента массива. | 0 |
[ last_is] | Индекс последнего переданного элемента массива. | - |
[ length_is] | Общее количество переданных элементов массива. | - |
[ max_is] | Наибольшее допустимое значение индекса массива. | - |
[ min_is] | Наименьшее допустимое значение индекса массива. | 0 |
[ size_is] | Общее количество элементов массива, выделенных для массива. | - |
Примечание
Атрибут min_is не реализован в RPC. Минимальный индекс массива всегда обрабатывается как нуль.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по