Sdílet prostřednictvím


Definice funkcí jazyka C

Definice funkce určuje název funkce, typy a počet parametrů, které očekává přijetí, a jeho návratový typ. Definice funkce obsahuje také tělo funkce s deklaracemi místních proměnných a příkazy, které určují, co funkce dělá.

Syntaxe

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

external-declaration: /* Povoleno pouze v rozsahu externího (souboru) */
function-definition
declaration

function-definition:
declaration-specifiers volitattribute-seqvolitdeclaratordeclaration-listvolitcompound-statement

/* attribute-seq je specifický pro Microsoft */

Prototypové parametry jsou:

declaration-specifiers:
storage-class-specifier declaration-specifiers volit
type-specifier declaration-specifiers volit
type-qualifier declaration-specifiers volit

declaration-list:
declaration
declaration-list declaration

declarator:
pointer volitdirect-declarator

direct-declarator: /* Deklarátor funkce */
direct-declarator ( parameter-type-list ) /* Deklarátor nového stylu */
direct-declarator ( identifier-list volit) /* Deklarátor zastaralého stylu */

Seznam parametrů v definici používá tuto syntaxi:

parameter-type-list: /* Seznam parametrů */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiers abstract-declarator volit

Seznam parametrů v definici funkce starého stylu používá tuto syntaxi:

identifier-list: /* Používá se v definicích a deklaracích funkcí zastaralého stylu */
identifier
identifier-list , identifier

Syntaxe těla funkce je:

compound-statement:
{ declaration-list volitstatement-listvolit}

Jediné specifikátory třídy úložiště, které mohou upravit deklaraci funkce, jsou extern a static. Specifikátor extern označuje, že na funkci lze odkazovat z jiných souborů. To znamená, že název funkce se exportuje do linkeru. Specifikátor static označuje, že na funkci nelze odkazovat z jiných souborů. To znamená, že název není exportován linkerem. Pokud se v definici funkce nezobrazí žádná třída úložiště, extern předpokládá se. V každém případě je funkce vždy viditelná z bodu definice na konec souboru.

declaration-specifiers Volitelné a povinné declarator společně určují návratový typ a název funkce. Jedná declarator se o kombinaci identifikátoru, který funkci pojmenuje, a závorky za názvem funkce. Nepovinný attribute-seq neterminal je funkce specifická pro Microsoft definovaná v atributech funkce.

( direct-declarator v declarator syntaxi) určuje název definované funkce a identifikátory jeho parametrů. Pokud obsahuje direct-declarator seznam parameter-type-list, určuje typy všech parametrů. Tento deklarátor slouží také jako prototyp funkce pro pozdější volání funkce.

A declaration v definicích funkce nemůže obsahovat jiné než storage-class-specifierregister.declaration-list Syntaxi type-specifierdeclaration-specifiers lze vynechat pouze v případě, že register je třída úložiště určena pro hodnotu int typu.

Je compound-statement tělo funkce obsahující deklarace místních proměnných, odkazy na externě deklarované položky a příkazy.

Části Atributy funkce, třída úložiště, návratový typ, parametry a tělo funkce podrobně popisují komponenty definice funkce.

Viz také

Functions