O controle de aviso atinge o final da função não-vóide

O controle de aviso atinge o final da função não-vóide
Quando escrevemos os programas em C++. Após a execução de programas, às vezes recebemos o erro: 'Aviso: o controle atinge o fim da função não-vóide', o que significa que certas funções que teriam que retornar alguns valores atingem o término. Pode não dar nenhum valor mais tarde. Neste momento, é bom dar uma olhada se todo fluxo de controle contém ou não um valor de retorno. Para reconhecer essa falha, primeiro devemos reconhecer o funcionamento do compilador.

Existem duas variedades de imprecisões que acontecem ao executar um programa.

Erros de compilação no tempo: Falha que pode ser reconhecida com a ajuda de usar o compilador sem executar o código. Geralmente, esses são erros de sintaxe que são reconhecidos sem executar o código.

Erros de tempo de execução: Falha que acontece enquanto a sintaxe do programa é precisa; No entanto, há um pouco de problema enquanto o código está executando. Geralmente, os loops ilimitados de acesso à reminiscência inválidos caem abaixo dos erros de tempo de execução.

Este artigo falará sobre problemas comuns confrontados por novatos e programadores qualificados adicionalmente. Frequentemente executamos na cautela que declaramos cautela: 'O controle atinge o fim da função não-vóide'. Geralmente, negligenciamos esse erro devido ao fato de o máximo do tempo porque o programa, no entanto, executa o mesmo, mesmo supondo.

Obtenha a mensagem de aviso:

Compilar este código é executado, mas ocorre um erro, o que mostra o aviso 'o controle atinge o fim da função não void'. Cada função contém um tipo de retorno que mostra o tipo de valor que a função talvez retorne. Se o método não estiver retornando nenhum valor, está longe de ser um tipo de retorno vazio. Obtemos o erro acima, enquanto a função não vóide não retorna o valor.

#incluir
usando namespace std;
int f ()
se (falso)
retornar 0;

int main ()
f ();
retornar 0;

Nesse caso, primeiro, integramos o arquivo de cabeçalho e usamos o nomes de espaço nomes. Além disso, aplicamos a declaração if. Às vezes, pode ser a situação que temos numerosas declarações if-else e todas as declarações contêm o valor de retorno; No entanto, se não houver mais afirmação, podemos obter o erro devido ao fato de o compilador não conseguir compreender que todas as situações são cobertas.

Aqui não temos nada na saída, por isso significa que o código é executado com sucesso, mas a função não retorna nenhum valor.

Use a instrução If:

Nesse caso, se a condição geralmente não for verdadeira e, consequentemente, interromperá a função 'f' privada de retornar algum valor. E é a razão por trás de receber a mensagem de atenção. Controle dentro da mensagem de atenção mostra o fluxo deste código. Agora vamos verificar se é um erro de tempo de execução ou erro no tempo de compilação. O aviso que obtemos aqui é detectado no horário de montagem, o uso de simplesmente a sintaxe desse código e o código nem sempre é definitivamente executado para testar se está alcançando muito o término de qualquer método não void.

#incluir
usando namespace std;
int f (int a)
se um < 8)
retornar 0;

int main ()
f (3);
retornar 0;

Temos sempre certeza de que, se executarmos o código, ele estará retornando 0 valor; No entanto, no entanto, podemos obter a mesma mensagem de cautela devido ao fato de o compilador não estar funcionando de maneira inteligente o suficiente para reconhecer em tempo de compilação que, uma vez que esse código seja executado, ele retornará o valor a cada vez. O compilador simplesmente verifica a sintaxe do código e traduz que para a função 'f' se a condição definida não for verdadeira, o fluxo desse código atingirá a linha oito e não poderá retornar o valor e, portanto, nós obter o erro.

Após a compilação do programa, na saída, não temos nada devido ao erro 'o controle atinge o final da função não void'.

Use as declarações de retorno:

Quando as declarações condicionais não devem incluir nenhuma declaração de retorno, o controle chega ao fim de uma função não void de outra maneira. Portanto, se a implementação dentro do método não void for separada e se as declarações não puderam executar cada caminho, então, no final, precisamos chamar explicitamente de 'retorno' para a função.

A instância subsequente valida a função de manuseio de strings com caminhos condicionais. Aqui incluímos três bibliotecas para diferentes propósitos e, depois disso, declaramos uma função. Por outro lado, algumas instâncias são deixadas agora não mais avaliadas quanto à condição definida, o que significa que o fluxo de controle pode atingir o cessar da função e produzir erros.

Aqui definimos a função 'Reversestring'. Passamos a string e a condição como parâmetros para esta função. O corpo da função não contém declaração de retorno. No entanto, não contém argumentos para chamar a função. Então o compilador apenas mostra a mensagem de cautela. Se chamarmos a função, não obtemos o erro.

Conclusão:

Neste artigo, obtemos informações sobre o erro: 'O controle atinge o final da função não void' e veja como recebemos esse erro. O método não void contém o tipo de retorno. Assim, o método deseja ter uma declaração que retorne os itens do tipo resultante. Se os padrões definidos do compilador forem aceitos, esse erro poderá ser reprimido completamente, levando a erros de tempo de execução se o método especificado chama no código.