Compartilhar via


Sintaxe de declaração de função

Funções podem ser globais ou membros de uma classe ou struct.Elas são declaradas usando a seguinte seqüência:

[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. O especificador de declaração.Consulte especificadores de.

    • Dentro de uma classe, um recurso opcional friend especificador.

    • Um especificador de classe de armazenamento opcional.Para funções globais, especificadores de classe de armazenamento permitido são estático e extern.Para funções de membro de classe, extern não é permitido.

    • Um especificador de função opcional.Para funções globais, o especificador de função só é permitido é embutido. Para funções de membro de classe, virtual e in-line são permitido e, para construtores, explícita.

    • Um especificador de tipo que indica o tipo de retorno (sujeito a modificações para um tipo de ponteiro ou uma referência pelo uso de * ou &).

  2. O Declarador.

    • Ponteiro opcional ou modificar o tipo de retorno de operator(s) de referência

    • Um opcional Microsoft específico modificador especificando a convenção de chamada.Consulte modificadores específicos do Microsoft.

    • O nome da função.Se a função é um membro de uma classe ou struct, o nome pode ser qualificado usando o operador de resolução de escopo.

    • A lista de declaração de argumentos entre parênteses ().

    • Um qualificador de const ou volátil opcional.Nesse contexto, const podem ser usadas somente para membros de classe e é usada para indicar a função não irão modificar os membros da classe de dados.

Se o tipo de retorno é um ponteiro de função, a sintaxe do Declarador pode ser mais complexa, conforme explicado abaixo.

  1. Uma especificação de exceção opcional que indica qual exceção (ões) que a função lança.Consulte especificações de exceção.

O tipo do identificador, portanto, declarado pode ser construído da seguinte maneira: const ou uma função volátil (se especificada), levando a lista de argumentos especificados, retornando o tipo indicado pelo especificador de declaração.

O exemplo a seguir mostra duas declarações de função simples:

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

A declaração de funções retornando ponteiros para funções

É recomendável que typedef ser usadas para declarar um alias para o tipo de ponteiro de função se declarando uma função que retorna um tipo de ponteiro de função.Por exemplo

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

Se isso não for feito, a sintaxe adequada para a declaração da função pode ser deduzida a partir a sintaxe declarativa para o ponteiro de função, substituindo o identificador (fp no exemplo acima) com o nome e o argumento lista funções, da seguinte maneira:

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

Declaração precedente é equivalente à declaração usando typedef acima.

Consulte também

Referência

Declarações de função