Condividi tramite


Definizioni di funzioni C

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. 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.

Sintassi

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

external-declaration: /* Consentito solo all'ambito esterno (file) */
function-definition
declaration

function-definition:
declaration-specifiersOptareattribute-seqOptaredeclaratordeclaration-listOptarecompound-statement

/* attribute-seq è */ specifico di Microsoft

I parametri del prototipo sono:

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

declaration-list:
declaration
declaration-list declaration

declarator:
pointerOptaredirect-declarator

direct-declarator: /* Un dichiaratore di funzioni */
direct-declarator(parameter-type-list) /* Dichiaratore in stile nuovo */
direct-declarator(identifier-listOptare) /* Dichiaratore in stile obsoleto */

L'elenco di parametri in una definizione utilizza questa sintassi:

parameter-type-list: /* Elenco dei parametri */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratorOptare

L'elenco di parametri in una definizione di funzione obsoleta utilizza questa sintassi:

identifier-list: /* Usato nelle definizioni e nelle dichiarazioni di funzione in stile obsoleto */
identifier
identifier-list , identifier

La sintassi per il corpo della funzione è:

compound-statement:
{declaration-listOptarestatement-listOptare}

Gli unici identificatori di classe di archiviazione che possono modificare una dichiarazione di funzione sono extern e static. L'identificatore extern significa che è possibile far riferimento alla funzione da altri file; ovvero il nome della funzione viene esportato al linker. L'identificatore static indica che la funzione non può essere a cui fare riferimento da altri file, ovvero il nome non viene esportato dal linker. Se in una definizione di funzione non viene visualizzata nessuna classe di archiviazione, viene previsto extern. Tuttavia, la funzione è sempre visibile dal punto della definizione fino alla fine del file.

Il valore facoltativo e obbligatorio declarator specificare il tipo restituito declaration-specifiers e il nome della funzione. Il declarator è una combinazione dell'identificatore che denomina la funzione e le parentesi dopo il nome della funzione. Il nonterminale facoltativo attribute-seq è una funzionalità specifica di Microsoft definita in Attributi funzione.

declarator Nella direct-declarator sintassi specifica il nome della funzione definita e gli identificatori dei relativi parametri. Se include un parameter-type-listoggetto , l'elenco direct-declarator specifica i tipi di tutti i parametri. Tale dichiaratore funge anche da un prototipo di funzione per le successive chiamate alla funzione.

Un declaration oggetto nelle definizioni delle declaration-list funzioni non può contenere un storage-class-specifier oggetto diverso da register. La type-specifier sintassi declaration-specifiers può essere omessa solo se la register classe di archiviazione è specificata per un valore di int tipo.

Il compound-statement corpo della funzione contiene dichiarazioni di variabili locali, riferimenti a elementi dichiarati esternamente e istruzioni.

Le sezioni Attributi di funzioni, Classi di archiviazione, Tipo restituito, Parametri e Corpo della funzione descrivono in dettaglio i componenti della definizione della funzione.

Vedi anche

Funzioni