Compartir a través de


Definiciones de funciones de C

Una definición de función especifica el nombre de la función, los tipos y el número de parámetros que espera recibir y su tipo de valor devuelto. Una definición de función también incluye un cuerpo de función con las declaraciones de sus variables locales y las instrucciones que determinan lo que hace la función.

Sintaxis

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

external-declaration: /* Solo se permite en el ámbito externo (archivo) */
function-definition
declaration

function-definition:
declaration-specifiers optarattribute-seqoptardeclaratordeclaration-listoptarcompound-statement

/* attribute-seq es específico de Microsoft */

Los parámetros de prototipo son:

declaration-specifiers:
storage-class-specifier declaration-specifiers optar
type-specifier declaration-specifiers optar
type-qualifier declaration-specifiers optar

declaration-list:
declaration
declaration-list declaration

declarator:
pointer optardirect-declarator

direct-declarator: /* Un declarador de función */
direct-declarator ( parameter-type-list ) /* Declarador de estilo nuevo */
direct-declarator ( identifier-list optar) /* Declarador de estilo obsoleto */

La lista de parámetros de una definición usa esta sintaxis:

parameter-type-list: /* La lista de parámetros */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiers abstract-declarator optar

La lista de parámetros de una definición de función de estilo antiguo usa esta sintaxis:

identifier-list: /* Se usa en declaraciones y definiciones de función de estilo obsoleto */
identifier
identifier-list , identifier

La sintaxis del cuerpo de la función es:

compound-statement:
{ declaration-list optarstatement-listoptar}

Los únicos especificadores de clase de almacenamiento que pueden modificar una declaración de función son extern y static. El extern especificador indica que se puede hacer referencia a la función desde otros archivos; es decir, el nombre de la función se exporta al enlazador. El static especificador indica que no se puede hacer referencia a la función desde otros archivos; es decir, el enlazador no exporta el nombre. Si no aparece ninguna clase de almacenamiento en una definición de función, extern se supone. En cualquier caso, la función siempre es visible desde el punto de definición hasta el final del archivo.

El valor opcional declaration-specifiers y obligatorio juntos declarator especifican el nombre y el tipo de valor devuelto de la función. declarator es una combinación del identificador que denomina la función y los paréntesis que siguen al nombre de la función. El no predeterminado opcional attribute-seq es una característica específica de Microsoft definida en Atributos de función.

( direct-declarator en la declarator sintaxis) especifica el nombre de la función que se va a definir y los identificadores de sus parámetros. direct-declarator Si incluye , parameter-type-listla lista especifica los tipos de todos los parámetros. Este declarador también actúa como prototipo de función para las llamadas posteriores a la función.

En declaration las declaration-list definiciones de función no puede contener un valor storage-class-specifier distinto de register. Solo type-specifier se puede omitir en la declaration-specifiers sintaxis si se especifica la register clase de almacenamiento para un valor de int tipo .

compound-statement es el cuerpo de la función que contiene declaraciones de variables locales, referencias a elementos y instrucciones declarados externamente.

En las secciones Atributos de función, clase de almacenamiento, tipo de valor devuelto, parámetros y cuerpo de función se describen los componentes de la definición de función en detalle.

Consulte también

Funciones