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.