Loading AI tools
Da Wikipédia, a enciclopédia livre
Um protótipo de função ou declaração de função, nas linguagens de programação C e C++, é uma declaração de uma função que omite o corpo mas especifica o seu nome, aridade, tipos de argumentos e tipo de retorno. Um protótipo de função pode ser entendido como a especificação da sua interface.
A definição da função, em contrapartida, é a estrutura que além de conter a as informações de interface aqui descritas, possui o corpo onde é especificado o que a função realiza, O conceito de protótipo de função foi proposto originalmente na linguagem C++ e foi adotado posteriormente no padrão ANSI C da linguagem C.[1][2]
Como um exemplo, pode-se considerar o seguinte protótipo de função:
int fac(int n);
Este protótipo especifica que neste programa, existe uma função de nome "fac" que utiliza um único parâmetro "n" que está declarado como tipo inteiro "int". A definição da função precisa ser disponibilizada para que a função possa ser utilizada.
Se a função não for declarada previamente e o seu nome ocorre em alguma expressão seguida de um parêntese ("(
"), ela é declarada implicitamente como uma função sem nenhum argumento que retorna um int
. Neste caso, quando a função é aplicada a algum argumento, o compilador não será capaz de realizar uma verificação, em tempo de compilação, dos tipos dos argumentos e da aridade. A impossibilidade de verificar o uso correto de uma função comumente implica a ocorrência de erros.
#include <stdio.h>
/* * Se o protótipo é disponibilizado, o compilador irá detectar o erro * na função main(). Se ele é omitido, o erro não será notificado. */ int fac(int n); /* Protótipo da função "fac" */
int main() /* Chamada da função "main" */ { printf("%d\n", fac()); /* ERRO: falta um argumento na chamada de "fac" */ return 0; }
/* * Definição da função "fac" */ int fac(int n) /* Chamada da função "fac" */ { if (n == 0) { return 1; } else { return n * fac(n - 1); } }
A função "fac" espera que um argumento inteiro esteja na sua pilha de execução quando é chamada. Se o protótipo é omitido, o compilador não terá como garantir a presença do argumento e a função "fac" acabará operando sobre algum outro dado existente na pilha (possivelmente um código de retorno) ou um valor de alguma variável que não está no escopo corrente. Incluindo o protótipo da função, o programador informa ao compilador que a função "fac" obtém um inteiro como argumento e permite que o compilador avise a ocorrência desse tipo de erro.
Através da utilização de protótipos de função em arquivos de cabeçalho (normalmente, em programas escritos na linguagem C, em arquivos com a extensão ".h") é possível especificar interfaces para bibliotecas de software.
Na linguagem C++, os protótipos de função são também utilizados em declarações de classe.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.