Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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-specifiers
opt opt attribute-seq
declarator
declaration-list
compound-statement
/* attribute-seq
jest specyficzny dla firmy Microsoft */
Parametry prototypu to:
declaration-specifiers
:
storage-class-specifier
declaration-specifiers
Zdecydować
type-specifier
declaration-specifiers
Zdecydować
type-qualifier
declaration-specifiers
Zdecydować
declaration-list
:
declaration
declaration-list
declaration
declarator
:
pointer
Zdecydować direct-declarator
direct-declarator
: /* Deklarator funkcji */
direct-declarator
(
parameter-type-list
)
/* Deklarator w nowym stylu */
direct-declarator
(
identifier-list
opt )
/* 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-specifiers
abstract-declarator
Zdecydować
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-list
opt 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-list
element , 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.