Megosztás a következőn keresztül:


Tömbattribútumok

Szoros kapcsolat áll fenn a tömbök és a mutatók között a C nyelven. Ha paraméterként ad át egy függvénynek, a tömb neve a tömb első elemére mutató mutatóként lesz kezelve, ahogyan az a következő példában látható:

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

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

    fLocal1(chArray);
}

Egy helyi hívásban a mutató paraméterrel haladhat át a memórián, és megvizsgálhatja a többi cím tartalmát:

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

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

Amikor egy ügyfél egy mutatót egy távoli eljárásnak ad át, az ügyfélcsomópont a mutatót és a rá mutató adatokat is továbbítja. Ha az egérmutató nem korlátozódik a megfelelő adatokra, az ügyfél összes memóriáját minden távoli hívással továbbítani kell. A felületdefiníció erős beírásának kényszerítésével a MIDL korlátozza az ügyfél-csonkok feldolgozását a megadott mutatónak megfelelő adatokra.

A tömb mérete és a távoli számítógépre továbbított tömbelemek tartománya lehet állandó vagy változó. Ha ezek az értékek változók, és így futásidőben vannak meghatározva, az IDL-fájlban attribútumokkal kell megadnia, hogy hány tömbelemet kell továbbítani. A következő MIDL-attribútumok támogatják a tömbkorlátokat.

Attribútum Leírás Alapértelmezett
[ first_is] Az első továbbított tömbelem indexe. 0
[ last_is] Az utolsó továbbított tömbelem indexe. -
[ length_is] Továbbított tömbelemek teljes száma. -
[ max_is] A legmagasabb érvényes tömbindex-érték. -
[ min_is] Legalacsonyabb érvényes tömbindex-érték. 0
[ size_is] A tömbhöz lefoglalt tömbelemek teljes száma. -

 

Jegyzet

A min_is attribútum nincs implementálva az RPC-ben. A minimális tömbindex mindig nullaként van kezelve.