Como um protótipo funcional de programação C
O que acontece quando você não protótipo? Como com qualquer coisa na programação C, quando você goof acima, o compilador ou vinculador permite que você saiba com uma mensagem de erro - ou o programa simplesmente não funcionar adequadamente. Não é o fim do mundo - não, não gosto de programar um robô militar ou projetar código genético para uma nova espécie de planta carnívora.
BASIC FUNCTION-NO RETURN
#include prompt de void () - / * função protótipo * / int () {int entrada de loop-char principal [32] -loop = 0-while (looplt; 5) {prompt () - fgets (entrada, 31, stdin) -loop = circuito + 1-} return (0) -} / * prompt de exibição * / void rápida () {printf ( "C: DOS>") -}
Exercício 1: Modificar o código fonte de Basic Função- No Return. Comentar outthe protótipo da Linha 3. Construir o resultado.
erros do compilador são coisas maravilhosas, deliciosamente precisos ainda totalmente enigmáticas. Aqui está a mensagem de erro gerada pelo Code :: Blocks, embora apenas as partes relevantes da mensagem:
13 Aviso: declaração implícita da função 'prompt'23 Aviso: conflitantes tipos para' prompt'13 Aviso: declaração implícita anterior do "Avisar" foi aqui
O primeiro aviso ocorre na Linha 13 no arquivo de código-fonte, onde a função alerta () é usada dentro da função main (). O compilador está lhe dizendo que você está usando uma função sem um protótipo. Como a mensagem de erro diz, você está declarando implicitamente uma função. Isso é um não-não, mas não um erro de full-on.
O segundo aviso ocorre onde a função alerta () habita no programa. No código-fonte, é na Linha 23. O aviso afirma que alerta () já foi declarada (na Linha 11) e que o segundo uso pode entrar em conflito com o primeiro.
O último aviso é uma referência de volta para onde a função foi chamada, novamente na Linha 13.
Para colocá-lo de forma sucinta: O compilador não tem idéia do que se passa com a função de alerta (). Seu código compila, mas a execução é arriscado.
Você pode tirar a conclusão de que a criação de protótipos é uma necessidade absoluta em seu código C. Isso não é inteiramente verdade. Você pode evitar prototipagem, reordenando as funções em seu código-fonte. Enquanto uma função é listado antes de ser usado, você não precisa de um protótipo.
Exercício 2: Editar o seu código-fonte do Exercício 10-3. Remover o protótipo função que foi comentado na Linha 3. Cortar e colar (movimento) da função alerta () a partir do fundo do código-fonte imóvel a parte superior, acima da função main (). Salvar, construir e executar.
Evitando o protótipo da função mostra a solução para o Exercício 2.
EVITANDO o protótipo da função
#include / * Apresentar alerta * / prompt de void (void) {printf ( "C: DOS>") -} input () {int ciclo-char principal int [32] -loop = 0-while (looplt; 5 ) {prompt () - fgets (entrada, 31, stdin) -loop = circuito + 1-} return (0) -}
Escrevendo a função main () em primeiro lugar, seguido por outras funções permite uma melhor legibilidade, embora você está livre para colocar suas próprias funções de primeira para evitar a criação de protótipos. E se você não fizer isso, tenha em mente que outros programadores poderão fazê-lo dessa maneira, por isso não se surpreenda quando você vê-lo.
mensagens de erro do compilador em Code :: Blocks tem parênteses depois deles. As observações entre parênteses referem-se ao interruptor, ou a opção de linha de comando tradicional, que permite a verificação de um alerta particular. Por exemplo, as mensagens de erro do Exercício 1 ler na íntegra:
11 Aviso: declaração implícita da função "Avisar" (-função-declaração -Wimplicit) 20 Aviso: conflitantes tipos para 'rápida' (ativado por padrão)