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-specifiers
Optareattribute-seq
Optaredeclarator
declaration-list
Optarecompound-statement
/* attribute-seq
è */ specifico di Microsoft
I parametri del prototipo sono:
declaration-specifiers
:
storage-class-specifier
declaration-specifiers
Optare
type-specifier
declaration-specifiers
Optare
type-qualifier
declaration-specifiers
Optare
declaration-list
:
declaration
declaration-list
declaration
declarator
:
pointer
Optaredirect-declarator
direct-declarator
: /* Un dichiaratore di funzioni */
direct-declarator
(
parameter-type-list
)
/* Dichiaratore in stile nuovo */
direct-declarator
(
identifier-list
Optare)
/* 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-specifiers
abstract-declarator
Optare
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-list
Optarestatement-list
Optare}
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-list
oggetto , 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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per