Matrixkenmerken
Er is een nauwe relatie tussen matrices en aanwijzers in de C-taal. Wanneer een parameter aan een functie wordt doorgegeven, wordt een matrixnaam behandeld als een aanwijzer naar het eerste element van de matrix, zoals wordt weergegeven in het volgende voorbeeld:
/* fragment */
extern void f1(char * p1);
void main(void)
{
char chArray[MAXSIZE];
fLocal1(chArray);
}
In een lokale aanroep kunt u de aanwijzerparameter gebruiken om door het geheugen te lopen en de inhoud van andere adressen te onderzoeken:
/* dump memory (fragment) */
void fLocal1(char * pch1)
{
int i;
for (i = 0; i < MAXSIZE; i++)
printf("%c ", *pch1++);
}
Wanneer een client een aanwijzer doorgeeft aan een externe procedure, verzendt de client-stub zowel de aanwijzer als de gegevens naar wie deze verwijst. Tenzij de aanwijzer beperkt is tot de bijbehorende gegevens, moet alle geheugen van de client worden verzonden bij elke externe aanroep. Door sterke typen in de interfacedefinitie af te dwingen, beperkt MIDL de verwerking van client-stub tot de gegevens die overeenkomen met de opgegeven aanwijzer.
De grootte van de matrix en het bereik van matrixelementen die naar de externe computer worden verzonden, kunnen constant of variabel zijn. Wanneer deze waarden variabel zijn en dus tijdens runtime worden bepaald, moet u kenmerken in het IDL-bestand gebruiken om op te geven hoeveel matrixelementen moeten worden verzonden. De volgende MIDL-kenmerken ondersteunen matrixgrenzen.
Attribuut | Beschrijving | Verstek |
---|---|---|
[ first_is] | Index van het eerste matrixelement dat is verzonden. | 0 |
[ last_is] | Index van het laatste matrixelement dat is verzonden. | - |
[ length_is] | Het totale aantal verzonden matrixelementen. | - |
[ max_is] | Hoogste geldige matrixindexwaarde. | - |
[ min_is] | Laagste geldige matrixindexwaarde. | 0 |
[ size_is] | Totaal aantal matrixelementen dat is toegewezen voor de matrix. | - |
Notitie
Het kenmerk min_is is niet geïmplementeerd in RPC. De minimummatrixindex wordt altijd behandeld als nul.