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-specifiersopt opt declarator declaration-list attribute-seq compound-statement

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

Prototypové parametry jsou:

declaration-specifiers:
storage-class-specifierdeclaration-specifiersvolit
type-specifierdeclaration-specifiersvolit
type-qualifierdeclaration-specifiersvolit

declaration-list:
declaration
declaration-list declaration

declarator:
pointervolit direct-declarator

direct-declarator: /* Deklarátor funkce */
direct-declarator ( parameter-type-list ) /* Deklarátor nového stylu */
direct-declarator ( identifier-listopt ) /* Zastaralé deklarátor 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-specifiersabstract-declaratorvolit

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-listopt opt statement-list }

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-specifier register.declaration-list Syntaxi type-specifier declaration-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