Compartir a través de


Sintaxis de declaración de funciones

Las funciones pueden ser globales o miembros de una clase o struct. Se declaran mediante la siguiente secuencia:

[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] declarator [cv-qualifer] 
[exception-spec]
[friend] [storage-class-specifier] [function-specifier]
[[cv-qualifer] type-specifier] [*|&] [ms-modifer] identifier 
( argument-list ) [cv-qualifer] [exception-spec]
  1. El especificador de declaración. Vea Especificadores.

    • Dentro de una clase, un especificador friend opcional.

    • Un especificador de clase de almacenamiento opcional. Para las funciones globales, los especificadores de clase de almacenamiento permitidos son static y extern. Para las funciones miembro de clase, extern no está permitido.

    • Un especificador de función opcional. Para las funciones globales, el único especificador de función permitido es inline. Para las funciones miembro de clase, se permiten virtual e inline, y, para los constructores, explicit.

    • Un especificador de tipo que indica el tipo de valor devuelto (sujeto a modificación a puntero o tipo de referencia mediante el uso de * o &).

  2. El declarador.

    • Puntero u operadores de referencia opcionales que modifican el tipo de valor devuelto.

    • Un modificador específico de Microsoft opcional que especifica la convención de llamada. Vea Modificadores específicos de Microsoft.

    • Nombre de la función. Si la función es un miembro de una clase o struct, el nombre se puede calificar mediante el operador de resolución de ámbito.

    • La lista de declaración de argumentos entre paréntesis ().

    • Un calificador const o volatile opcional. En este contexto, const solo se puede usar para miembros de clase, y se utiliza para indicar que la función no modificará miembros de datos de la clase.

Si el tipo de valor devuelto es un puntero a función, la sintaxis del declarador puede ser más compleja, como se explica más adelante.

  1. Una especificación de excepciones opcional que indica qué excepciones inicia la función. Vea Especificaciones de excepciones.

El tipo del identificador declarado de este modo se puede construir como sigue: función const o volatile (si se especifica), se toma la lista de argumentos especificada y se devuelve el tipo indicado por el especificador de declaración.

En el ejemplo de código siguiente se muestran dos declaraciones de función simples:

char *strchr( char *dest, char *src );
static int atoi( const char *ascnum ) const;

Declarar funciones que devuelven punteros a funciones

Se recomienda usar typedef para declarar un alias para el tipo de puntero a función si se declara una función que devuelve un tipo de puntero a función. Por ejemplo

typedef int (*fp)(int);
fp myFunction(char* s); // function returning function pointer

Si no es así, la sintaxis correcta para la declaración de la función se puede deducir de la sintaxis de declarador del puntero a función, mediante la sustitución del identificador (fp en el ejemplo anterior) por el nombre y la lista de argumentos de las funciones, como sigue:

int (*myFunction(char* s))(int);

La declaración anterior es equivalente a la otra declaración con typedef.

Vea también

Referencia

Declaraciones de función