Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A MIDL számos funkciót kínál az adatok tömbjeinek és mutatóinak adathoz való továbbításához. Ezekkel az attribútumokkal megadhatja a tömbök jellemzőit és több mutatószintet.
| Attribútum | Használat |
|---|---|
| size_is | Megadja a méretes mutatókhoz, a méretes mutatókhoz és az egy- vagy többdimenziós tömbökhöz lefoglalandó memória mennyiségét. |
| max_is | A tömbindex maximális értéke. |
| length_is | Az továbbítandó tömbelemek száma. |
| first_is | Az első továbbítandó tömbelem indexe. |
| last_is | Az utolsó továbbítandó tömbelem indexét adja meg. |
| sztring | Azt jelzi, hogy az egydimenziós karakter, wchar_t, bájtos (vagy azzal egyenértékű) tömböt vagy az ilyen tömbre mutató mutatót sztringként kell kezelni. |
| tartomány | Olyan argumentumok vagy mezők engedélyezett értékeinek tartományát adja meg, amelyek értékei futásidőben vannak beállítva. |
A MIDL háromféle mutatót támogat: referenciamutatókat, egyedi mutatókat és teljes mutatókat. Ezeket a mutatókat a mutatóattribútumok ref, egyediés ptradhatók meg.
A mutatóattribútum típusattribútumként alkalmazható; egy struktúratagra, szakszervezeti tagra vagy paraméterre vonatkozó mezőattribútumként; vagy függvényattribútumként, amely a függvény visszatérési típusára vonatkozik. A mutatóattribútum a pointer_default kulcsszóval is megjeleníthető.
Ahhoz, hogy egy mutatóparaméter egy távoli függvény során megváltozhasson az értékben, több mutatódeklarátort kell megadnia egy másik indirekt szinttel. A paraméterre alkalmazott explicit mutatóattribútum csak a paraméter jobb szélső mutatódeklarátorára van hatással. Ha egy paraméterdeklarációban több mutatódeklarátor is szerepel, a többi deklarátor alapértelmezés szerint a pointer_default attribútum által megadott mutatóattribútumot használja. Ha különböző mutatóattribútumokat szeretne alkalmazni több mutatódeklarátorra, meg kell határoznia az explicit mutatóattribútumokat meghatározó köztes típusokat.
Alapértelmezett Pointer-Attribute értékek
Ha egy paramétert tartalmazó mutatóhoz nincs társítva mutatóattribútum, a rendszer feltételezi, hogy a mutató egy ref mutató.
Ha nincs mutatóattribútum társítva egy struktúra vagy egy unió tagjaként, a MIDL-fordító a következő prioritási szabályok használatával rendeli hozzá a mutatóattribútumokat (1 a legmagasabb):
- A mutatótípusra explicit módon alkalmazott attribútumok
- A mutatóparaméterre vagy tagra explicit módon alkalmazott attribútumok
- A típust meghatározó IDL-fájl pointer_default attribútuma
- A típust importáló IDL-fájl pointer_default attribútuma
- ptr (osf mód); egyedi (alapértelmezett Microsoft RPC mód)
Ha az IDL-fájl fordítása alapértelmezett módban történik, az importált fájlok örökölhetik a mutatóattribútumokat a fájlok importálásából. Ez a funkció nem érhető el a /osf kapcsolóval történő fordításkor. További információ: importálási.
Függvény visszatérési típusai
A függvény által visszaadott mutatónak egyedi mutatónak vagy teljes mutatónak kell lennie. A MIDL-fordító hibát jelez, ha egy függvény eredménye hivatkozási mutató, explicit módon vagy alapértelmezés szerint. A visszaadott mutató mindig új tárterületet jelez.
A mutatóértéket visszaadó függvények megadhatnak egy mutatóattribútumot függvényattribútumként. Ha nincs mutatóattribútum, a függvényeredmény-mutató a pointer_default attribútumként megadott értéket használja.
Mutatóattribútumok a típusdefiníciókban
Amikor egy mutatóattribútumot ad meg egy typedef utasítás felső szintjén, a megadott attribútum a várt módon lesz alkalmazva a mutatódeklarátorra. Ha nincs megadva mutatóattribútum, a typedef utasítás felső szintjén lévő mutatódeklarátorok öröklik a mutatóattribútum típusát használatkor.
A DCE IDL nem teszi lehetővé, hogy ugyanazt a mutatóattribútumot explicit módon alkalmazza kétszer – például a typedef deklarációban és a paraméterattribútumok listájában. Ha a MIDL-fordító alapértelmezett (Microsoft-bővítmények) üzemmódját használja, ez a korlátozás enyhül.
A MIDL-tömbök és -mutatók távoli eljáráshívásokban való használatáról a Tömbök és mutatókcímű témakörben olvashat.