Megosztás:


C függvénydefiníciók

A függvénydefiníció meghatározza a függvény nevét, a várható paraméterek típusát és számát, valamint a visszatérési típusát. A függvénydefiníciók egy függvénytörzset is tartalmaznak a helyi változók deklarációival, valamint azokat az utasításokat, amelyek meghatározzák a függvény működését.

Szemantika

translation-unit:
external-declaration
translation-unit external-declaration

external-declaration: /* Csak külső (fájl) hatókörben engedélyezett */
function-definition
declaration

function-definition:
declaration-specifiers választattribute-seqválasztdeclaratordeclaration-listválasztcompound-statement

/* attribute-seq Microsoft-specifikus */

A prototípus paraméterei a következők:

declaration-specifiers:
storage-class-specifier declaration-specifiers választ
type-specifier declaration-specifiers választ
type-qualifier declaration-specifiers választ

declaration-list:
declaration
declaration-list declaration

declarator:
pointer választdirect-declarator

direct-declarator: /* Függvénydeklarátor */
direct-declarator ( parameter-type-list ) /* Új stílusú deklarátor */
direct-declarator ( identifier-list választ) /* Elavult stílusú deklarátor */

A definíció paraméterlistája a következő szintaxist használja:

parameter-type-list: /* A paraméterlista */
parameter-list
parameter-list , ...

parameter-list:
parameter-declaration
parameter-list , parameter-declaration

parameter-declaration:
declaration-specifiers declarator
declaration-specifiers abstract-declarator választ

A régi stílusú függvénydefiníció paraméterlistája a következő szintaxist használja:

identifier-list: /* Elavult stílusú függvénydefiníciókban és deklarációkban használatos */
identifier
identifier-list , identifier

A függvény törzsének szintaxisa a következő:

compound-statement:
{ declaration-list választstatement-listválaszt}

A függvénydeklarációk módosítására csak a storage-class kijelölők és a externstatic. A extern kijelölő azt jelzi, hogy a függvény más fájlokból is hivatkozható, vagyis a függvény neve exportálva lesz a hivatkozáskezelőbe. A static kijelölő azt jelzi, hogy a függvény nem hivatkozható más fájlokból, vagyis a nevet nem exportálja a hivatkozáskezelő. Ha egy függvénydefinícióban nem jelenik meg tárosztály, extern a függvény feltételezi. A függvény mindenesetre mindig látható a definíciós ponttól a fájl végéig.

A választható declaration-specifiers és kötelező declarator együtt adja meg a függvény visszatérési típusát és nevét. Az declarator azonosító a függvény nevét és a függvény nevét követő zárójelek kombinációját tartalmazza. Az opcionális attribute-seq nemterminális funkció a Függvényattribútumokban definiált Microsoft-specifikus funkció.

A direct-declarator (szintaxisban declarator ) a definiált függvény nevét és paramétereinek azonosítóit adja meg. Ha a direct-declarator lista tartalmazza a paramétert parameter-type-list, a lista az összes paraméter típusát határozza meg. Az ilyen deklarátor függvény-prototípusként is szolgál a függvény későbbi hívásaihoz.

A declaration függvénydefiníciókban a declaration-list függvénydefiníciók nem tartalmazhatnak storage-class-specifier másokat.register A type-specifier szintaxisban szereplő declaration-specifiers értéket csak akkor lehet kihagyni, ha a register tárolási osztály egy típushoz int van megadva.

Ez compound-statement az a függvénytörzs, amely helyi változódeklarációkat, külsőleg deklarált elemekre mutató hivatkozásokat és utasításokat tartalmaz.

A szakaszok függvényattribútumok, tárolási osztály, visszatérési típus, paraméterek és függvénytörzs részletesen ismertetik a függvénydefiníció összetevőit.

Lásd még

Funkciók