Használata függvény prototípusokat, programozás C és C
ANSI C szabvány szélesíti a koncepció pre-függvény leírása. Ezt a leírást az úgynevezett kiterjesztett függvény prototípust.
Funkció prototípusok két célt szolgálnak: egyrészt ők milyen típusú visszatérési értéke a funkciót, a fordító tudja generálni a megfelelő kódot a visszaküldött adatok Másodszor, a típus azonosításához és az argumentumok számát használt funkciókat. A prototípus a következő:
functionName típusú (paraméter lista);
A prototípus általában elején helyezkedik el a programot, és meg kell jelennie, mielőtt bármilyen függvényhívás.
Ezen túlmenően, hogy tájékoztassa a fordító, hogy milyen típusú a függvény visszatérési értéke a függvény prototípus lehetővé teszi, hogy végezzen a minőség-ellenőrzés típusai, mint például a végrehajtott ellenőrzések nyelven, mint a Pascal. Prototípusok hogy a fordító, hogy megtalálják, és az információt az összes illegális típusátalakítások között az érveket használják függvényhívás, és bizonyos paramétereket. Továbbá, a fordító hagyjuk kommunikálni, hogy a funkció az úgynevezett a megfelelő számú argumentummal.
Ha lehetséges, automatikusan átkonvertálja a argumentumtípus a típusú származtatott paraméter. Azonban néhány típusátalakítások nem engedélyezettek. Ha ez a funkció egy prototípus, az összes illegális átalakítás és egy hibaüzenet lesz megtalálható. Példaként a következő programot okoz hibaüzenetet, miközben megpróbál hívja func () egy mutató, de nem a kívánt úszót. (Nem lehet átalakítani a mutató egy float típusú).
/ * Ez a program a függvény prototípusokat eléréséhez erős típusellenőrzés amikor hívja funk (). A program nem lehet összeállítani, mert között eltérés az érvek meghatározott függvény prototípus, és milyen típusú érveket, amelyek az függvényhívás. * /
#include
float func (int x, float y); / * Prototípus * /
int main (void)
int x, * y;
x = 10;
y = x;
func (x, y); / * Típusütközés * /
vissza 0;
>
float func (int x, float y)
printf ( "% f", y / (float) x);
visszatérő y / (float) x;
>
A prototípus is lehetővé teszi, hogy a fordító üzenetet ad, ha az argumentumok száma használt a hívás funkció nem felel meg a számát megadott paraméterek függvényében. Például a következő program nem fordul le, mert funk () függvény a megfelelő számú argumentummal:
/ * A program nem fordul le miatt eltérés a paraméterek száma határozza meg a függvény prototípus, és a számos érvet használt függvényhívás. * /
#include
float func (int x, float y); / * Prototípus * /
int main (void)
func (2, 2,0, 4); / * Az argumentumok száma * /
vissza 0;
>
Egy műszaki szempontból, ha létrehoz egy függvény prototípus nem kell, hogy tartalmazza a valódi nevét a paramétereket. Például a következő két lehetőség teljesen érvényes és egyenértékű:
char func (char *, int);
char funk (char * str, int count);
Azonban, ha tartalmazzák a paraméter neveket, a fordító ugyanazokat a neveket a kérdés nem tartása típusú üzenetek.
Egyes funkciók, mint például a printf () tudja fogadni a változó számú érveket. A változó számú érvek határozzák meg a prototípus keresztül dot. Például a prototípust a printf () függvény így néz ki:
int printf (const char * FMT.);
kell fordulnunk a leírás a standard könyvtár va_arg () függvény létrehozásához funkciók változó számú érveket.
Meg kell használni a függvények prototípusai hibák megelőzésére eredményeként fellépő funkció felhívja a rossz érvek. Azt is segít, hogy ellenőrizze a helyességét a program anélkül, hogy a funkció az úgynevezett a megfelelő számú argumentummal. Mint korábban említettük, mert szükség van a C ++.