Sdílet prostřednictvím


Atributy pole

Mezi poli a ukazateli v jazyce C existuje blízký vztah. Při předání jako parametr funkce se název pole považuje za ukazatel na první prvek pole, jak je znázorněno v následujícím příkladu:

/* fragment */
extern void f1(char * p1);

void main(void)
{
    char chArray[MAXSIZE];

    fLocal1(chArray);
}

V místním volání můžete pomocí parametru ukazatele procházet paměť a zkoumat obsah jiných adres:

/* dump memory (fragment) */
void fLocal1(char * pch1)
{
    int i;

    for (i = 0; i < MAXSIZE; i++)
       printf("%c ", *pch1++);
}

Když klient předá ukazatel vzdálenému postupu, předá zástupný kód klienta ukazatel i data, na která odkazuje. Pokud není ukazatel omezen na odpovídající data, musí být veškerá paměť klienta přenášena při každém vzdáleném volání. Vynucením silného psaní v definici rozhraní omezuje MIDL zpracování klientské zástupné procedury na data, která odpovídají zadanému ukazateli.

Velikost pole a rozsah prvků pole přenášených do vzdáleného počítače může být konstantní nebo proměnná. Pokud jsou tyto hodnoty proměnné, a proto jsou určeny za běhu, musíte použít atributy v souboru IDL určit, kolik prvků pole se má přenést. Následující atributy MIDL podporují hranice polí.

Atribut Popis Výchozí
[ first_is] Index prvního prvku pole přenášeného. 0
[ last_is] Index posledního přenášeného prvku pole -
[ length_is] Celkový počet přenášených prvků pole -
[ max_is] Nejvyšší platná hodnota indexu pole. -
[ min_is] Nejnižší platná hodnota indexu pole 0
[ size_is] Celkový počet prvků pole přidělených pro pole -

 

Poznámka

Atribut min_is není implementován v rpc. Minimální index pole se vždy považuje za nulu.