Udostępnij za pośrednictwem


Definicje funkcji języka C

Definicja funkcji określa nazwę funkcji, typy i liczbę parametrów, których oczekuje, oraz typ zwracany. Definicja funkcji zawiera również treść funkcji z deklaracjami zmiennych lokalnych oraz instrukcje określające, co robi funkcja.

Składnia

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

external-declaration: /* Dozwolone tylko w zakresie zewnętrznym (plik) */
function-definition
declaration

function-definition:
declaration-specifiersopt opt attribute-seq declarator declaration-list compound-statement

/* attribute-seq jest specyficzny dla firmy Microsoft */

Parametry prototypu to:

declaration-specifiers:
storage-class-specifierdeclaration-specifiersZdecydować
type-specifierdeclaration-specifiersZdecydować
type-qualifierdeclaration-specifiersZdecydować

declaration-list:
declaration
declaration-list declaration

declarator:
pointerZdecydować direct-declarator

direct-declarator: /* Deklarator funkcji */
direct-declarator ( parameter-type-list ) /* Deklarator w nowym stylu */
direct-declarator ( identifier-listopt ) /* Deklarator w stylu przestarzałym */

Lista parametrów w definicji używa następującej składni:

parameter-type-list: /* Lista parametrów */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratorZdecydować

Lista parametrów w definicji funkcji starego stylu używa następującej składni:

identifier-list: /* Używane w przestarzałych definicjach funkcji i deklaracjach */
identifier
identifier-list , identifier

Składnia treści funkcji to:

compound-statement:
{declaration-listopt opt opt statement-list }

Jedynymi specyfikatorami klasy magazynu, które mogą modyfikować deklarację funkcji, są extern i static. Specyfikator extern oznacza, że można odwoływać się do funkcji z innych plików. Oznacza to, że nazwa funkcji jest eksportowana do konsolidatora. Specyfikator static oznacza, że nie można odwoływać się do funkcji z innych plików; oznacza to, że nazwa nie jest eksportowana przez konsolidator. Jeśli w definicji funkcji nie pojawi się żadna klasa magazynu, przyjmuje się założenie extern . W każdym razie funkcja jest zawsze widoczna z punktu definicji na końcu pliku.

Opcjonalne declaration-specifiers i obowiązkowe declarator razem określają zwracany typ i nazwę funkcji. Jest declarator to kombinacja identyfikatora, który nazywa funkcję i nawiasy po nazwie funkcji. Opcjonalny attribute-seq nonterminal to funkcja specyficzna dla firmy Microsoft zdefiniowana w atrybutach funkcji.

( direct-declarator w declarator składni) określa nazwę zdefiniowanej funkcji i identyfikatory jego parametrów. Jeśli element direct-declarator zawiera parameter-type-listelement , lista określa typy wszystkich parametrów. Taki deklarator służy również jako prototyp funkcji do późniejszego wywołania funkcji.

Element declaration w declaration-list definicjach funkcji in nie może zawierać elementu innego storage-class-specifier niż register. declaration-specifiers W type-specifier składni można pominąć tylko wtedy, gdy register klasa magazynu jest określona dla wartości int typu.

Jest compound-statement to treść funkcji zawierająca deklaracje zmiennych lokalnych, odwołania do zadeklarowanych zewnętrznie elementów i instrukcji.

Sekcje Atrybuty funkcji, Klasa magazynu, Typ zwracany, Parametry i Treść funkcji opisują szczegółowo składniki definicji funkcji.

Zobacz też

Funkcje