Definizioni di funzioni CC Function Definitions

Una definizione di funzione specifica il nome della funzione, i tipi e il numero di parametri che prevede di ricevere e il relativo tipo restituito.A function definition specifies the name of the function, the types and number of parameters it expects to receive, and its return type. Una definizione di funzione include inoltre un corpo della funzione con le dichiarazioni delle variabili locali e le istruzioni che determinano ciò che svolge la funzione.A function definition also includes a function body with the declarations of its local variables, and the statements that determine what the function does.

SintassiSyntax

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

translation-unit external-declarationtranslation-unit external-declaration

external-declaration: /* Consentita solo in ambito esterno (file) */external-declaration: /* Allowed only at external (file) scope */
function-definitionfunction-definition

declaration

function-definition: /* Qui il dichiaratore è il dichiaratore di funzione */function-definition: /* Declarator here is the function declarator */
declaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statementdeclaration-specifiers optattribute-seq optdeclarator declaration-list optcompound-statement

/* attribute-seq è specifico di Microsoft //* *attribute-seq is Microsoft Specific */

I parametri del prototipo sono:Prototype parameters are:

declaration-specifiers:declaration-specifiers:
storage-class-specifier declaration-specifiers optstorage-class-specifier declaration-specifiers opt

type-specifier declaration-specifiers opttype-specifier declaration-specifiers opt

type-qualifier declaration-specifiers opttype-qualifier declaration-specifiers opt

declaration-list:declaration-list:
declarationdeclaration

declaration-list declarationdeclaration-list declaration

declarator:declarator:
pointer optdirect-declaratorpointer optdirect-declarator

direct-declarator: /* Dichiaratore di funzione */direct-declarator: /* A function declarator */
direct-declarator ( parameter-type-list ) /* Dichiaratore nuovo stile */direct-declarator ( parameter-type-list ) /* New-style declarator */

direct-declarator ( identifier-list opt) /* Dichiaratore stile obsoleto */direct-declarator ( identifier-list opt) /* Obsolete-style declarator */

L'elenco di parametri in una definizione utilizza questa sintassi:The parameter list in a definition uses this syntax:

parameter-type-list: /* Elenco parametri */parameter-type-list: /* The parameter list */
parameter-listparameter-list

parameter-list , ...parameter-list , ...

parameter-list:parameter-list:
parameter-declarationparameter-declaration

parameter-list , parameter-declarationparameter-list , parameter-declaration

parameter-declaration:parameter-declaration:
declaration-specifiers declaratordeclaration-specifiers declarator

declaration-specifiers abstract declarator optdeclaration-specifiers abstract declarator opt

L'elenco di parametri in una definizione di funzione obsoleta utilizza questa sintassi:The parameter list in an old-style function definition uses this syntax:

identifier-list: /* Usato nelle definizioni di funzione e nelle dichiarazioni obsolete */identifier-list: /* Used in obsolete-style function definitions and declarations */
identifieridentifier

identifier-list , identifieridentifier-list , identifier

La sintassi per il corpo della funzione è:The syntax for the function body is:

compound-statement: /* Corpo della funzione */compound-statement: /* The function body */
{ declaration-list optstatement-list opt}{ declaration-list optstatement-list opt}

Gli unici identificatori della classe di archiviazione che consentono di modificare una dichiarazione di funzione sono extern e static.The only storage-class specifiers that can modify a function declaration are extern and static. L'identificatore extern significa che è possibile far riferimento alla funzione da altri file; ovvero il nome della funzione viene esportato al linker.The extern specifier signifies that the function can be referenced from other files; that is, the function name is exported to the linker. L'identificatore static significa che non è possibile far riferimento alla funzione da altri file, ovvero che il nome non viene esportato dal linker.The static specifier signifies that the function cannot be referenced from other files; that is, the name is not exported by the linker. Se in una definizione di funzione non viene visualizzata nessuna classe di archiviazione, viene previsto extern.If no storage class appears in a function definition, extern is assumed. Tuttavia, la funzione è sempre visibile dal punto della definizione fino alla fine del file.In any case, the function is always visible from the definition point to the end of the file.

Gli elementi declaration-specifiers facoltativi e il declarator obbligatorio specificano insieme il tipo restituito e il nome della funzione.The optional declaration-specifiers and mandatory declarator together specify the function's return type and name. Il declarator è una combinazione dell'identificatore che denomina la funzione e le parentesi dopo il nome della funzione.The declarator is a combination of the identifier that names the function and the parentheses following the function name. L'elemento attribute-seq facoltativo e non terminale è una funzionalità specifica Microsoft definita in Attributi di funzione.The optional attribute-seq nonterminal is a Microsoft-specific feature defined in Function Attributes.

L'elemento direct-declarator (nella sintassi declarator) specifica il nome della funzione definita e gli identificatori dei relativi parametri.The direct-declarator (in the declarator syntax) specifies the name of the function being defined and the identifiers of its parameters. Se direct-declarator include parameter-type-list, l'elenco specifica i tipi di tutti i parametri.If the direct-declarator includes a parameter-type-list, the list specifies the types of all the parameters. Tale dichiaratore funge anche da un prototipo di funzione per le successive chiamate alla funzione.Such a declarator also serves as a function prototype for later calls to the function.

Un declaration in declaration-list nelle definizioni di funzione non può contenere un storage-class-specifier diverso da register.A declaration in the declaration-list in function definitions cannot contain a storage-class-specifier other than register. type-specifier nella sintassi declaration-specifiers può essere omesso solo se la classe di archiviazione register viene specificata per un valore di tipo int.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.

compound-statement è il corpo della funzione che contiene le dichiarazioni delle variabili locali, i riferimenti agli elementi dichiarati esternamente e le istruzioni.The compound-statement is the function body containing local variable declarations, references to externally declared items, and statements.

Le sezioni Attributi di funzioni, Classi di archiviazione, Tipo restituito, Parametri e Corpo della funzione descrivono in dettaglio i componenti della definizione della funzione.The sections Function Attributes, Storage Class, Return Type, Parameters, and Function Body describe the components of the function definition in detail.

Vedere ancheSee Also

FunzioniFunctions