Definicje funkcji języka CC Function Definitions

Definicja funkcji określa nazwę funkcji, typy i liczbę parametrów, które oczekuje na odebranie, i typ zwracany.A function definition specifies the name of the function, the types and number of parameters it expects to receive, and its return type. Definicja funkcji zawiera również treść funkcji z deklaracjami zmiennych lokalnych i instrukcji, które określają działanie funkcji.A function definition also includes a function body with the declarations of its local variables, and the statements that determine what the function does.

SkładniaSyntax

Jednostka translation:translation-unit:
    deklaracja zewnętrzna    external-declaration
    deklaracja zewnętrzna jednostki tłumaczenia    translation-unit external-declaration

deklaracja zewnętrzna:/ * dozwolone tylko w zewnętrznym zakresie (pliku) */external-declaration: /* Allowed only at external (file) scope */
    Definicja funkcji    function-definition
    oświadczeń    declaration

definicja funkcji:function-definition:
    Deklaracja-specyfikatorsopt Attribute-SEQopt deklarator deklaracji-listopt złożone-instrukcja    declaration-specifiersopt attribute-seqopt declarator declaration-listopt compound-statement

/*atrybut-seq jest specyficzny dla firmy Microsoft*//* attribute-seq is Microsoft-specific */

Parametry prototypu:Prototype parameters are:

specyfikatory deklaracji:declaration-specifiers:
    Deklaracja specyfikatora klasy magazynuwybór    storage-class-specifier declaration-specifiersopt
    Deklaracja specyfikatora typu — wybór specyfikatorów    type-specifier declaration-specifiersopt
    Deklaracja kwalifikatora typu — wybór specyfikatorów    type-qualifier declaration-specifiersopt

Deklaracja-lista:declaration-list:
    oświadczeń    declaration
    Deklaracja listy deklaracji     declaration-list declaration

deklarator:declarator:
    wybór wskaźnika Direct-deklarator    pointeropt direct-declarator

Direct-deklarator:/ * A funkcja deklarator */direct-declarator: /* A function declarator */
    Direct-deklarator**(**Typ parametru-list***)* / * New-Style deklarator */    direct-declarator ( parameter-type-list ) /* New-style declarator */
    Direct-deklarator***(* nieważność listy identyfikatorów ) / * — przestarzałe style deklarator */    direct-declarator ( identifier-listopt ) /* Obsolete-style declarator */

Lista parametrów w definicji używa następującej składni:The parameter list in a definition uses this syntax:

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

Lista parametrów:parameter-list:
    Deklaracja parametru    parameter-declaration
    Lista parametrów , Deklaracja parametru    parameter-list , parameter-declaration

Deklaracja parametru:parameter-declaration:
    specyfikatory deklaracji deklarator    declaration-specifiers declarator
    abstrakcyjne specyfikatory deklaracji -deklaratoropt    declaration-specifiers abstract-declaratoropt

Lista parametrów w definicji funkcji starego stylu używa następującej składni:The parameter list in an old-style function definition uses this syntax:

Identyfikator-list:/ * używany w definicjach i deklaracjach funkcji przestarzałego stylu */identifier-list: /* Used in obsolete-style function definitions and declarations */
    identyfikatora    identifier
    Identyfikator — lista , Identyfikator    identifier-list , identifier

Składnia dla treści funkcji jest następująca:The syntax for the function body is:

instrukcja złożona:compound-statement:
    { deklaracjiopt instrukcji SELECT-listopt }    { declaration-listopt statement-listopt }

Jedyne specyfikatory klasy magazynu, które mogą modyfikować deklarację funkcji extern , są i static .The only storage-class specifiers that can modify a function declaration are extern and static. extern Specyfikator oznacza, że do funkcji można odwoływać się z innych plików, to oznacza, że nazwa funkcji zostanie wyeksportowana do konsolidatora.The extern specifier signifies that the function can be referenced from other files; that is, the function name is exported to the linker. static Specyfikator oznacza, że nie można odwoływać się do funkcji z innych plików, to oznacza, że nazwa nie jest eksportowana przez konsolidator.The static specifier signifies that the function cannot be referenced from other files; that is, the name is not exported by the linker. Jeśli Klasa magazynu nie jest wyświetlana w definicji funkcji, extern przyjmuje się.If no storage class appears in a function definition, extern is assumed. W każdym przypadku funkcja jest zawsze widoczna z punktu definicji do końca pliku.In any case, the function is always visible from the definition point to the end of the file.

Opcjonalne specyfikatory deklaracji i obowiązkowe deklarator razem określają typ zwracany i nazwę funkcji.The optional declaration-specifiers and mandatory declarator together specify the function's return type and name. Deklarator to kombinacja identyfikatorów, która nazywa funkcję i nawiasy po nazwie funkcji.The declarator is a combination of the identifier that names the function and the parentheses following the function name. Opcjonalny atrybut-seq nieterminalu jest funkcją specyficzną dla firmy Microsoft zdefiniowaną w atrybutach funkcji.The optional attribute-seq nonterminal is a Microsoft-specific feature defined in Function Attributes.

Direct-deklarator (w składni deklarator ) określa nazwę zdefiniowanej funkcji i identyfikatory jej parametrów.The direct-declarator (in the declarator syntax) specifies the name of the function being defined and the identifiers of its parameters. Jeśli polecenie Direct-deklarator zawiera listę typów parametrów, lista określa typy wszystkich parametrów.If the direct-declarator includes a parameter-type-list, the list specifies the types of all the parameters. Takie deklarator również służy jako prototyp funkcji dla późniejszego wywołania funkcji.Such a declarator also serves as a function prototype for later calls to the function.

Deklaracja na liście deklaracji w definicjach funkcji nie może zawierać specyfikatora klasy magazynu innego niż register .A declaration in the declaration-list in function definitions cannot contain a storage-class-specifier other than register. Specyfikator typu w składni specyfikatorów deklaracji można pominąć tylko wtedy, gdy register Klasa magazynu jest określona dla wartości int typu.The type-specifier in the declaration-specifiers syntax can be omitted only if the register storage class is specified for a value of int type.

Instrukcja złożona jest treścią funkcji zawierającą deklaracje zmiennej lokalnej, odwołania do elementów zadeklarowanych zewnętrznie i instrukcji.The compound-statement is the function body containing local variable declarations, references to externally declared items, and statements.

Sekcje atrybutów funkcji, klasy magazynu, typu zwracanego, parametrówi treści funkcji opisują składniki definicji funkcji szczegółowo.The sections Function Attributes, Storage Class, Return Type, Parameters, and Function Body describe the components of the function definition in detail.

Zobacz teżSee also

FunkcjeFunctions