Quero saber como e quando posso usar a exit()
função como o programa do meu livro:
#include<stdio.h>
void main()
{
int goals;
printf("enter number of goals scored");
scanf("%d",&goals);
if(goals<=5)
goto sos;
else
{
printf("hehe");
exit( );
}
sos:
printf("to err is human");
}
Quando eu o executo, ele mostra ERROR: call to undefined function exit () .
Além disso, quero saber como posso criar uma opção para fechar a janela na qual o programa é executado. Por exemplo, fiz um programa baseado em menu que tinha várias opções e uma delas era "sair do menu" . Como posso fazer isso sair do programa (ou seja, fechar a janela)?
void main()
OTOH está simplesmente errado . Assim comoexit();
está errado, e omitir#include <stdlib.h>
é errado.Respostas:
Tente usar em seu
exit(0);
lugar. Aexit
função espera um parâmetro inteiro. E não se esqueça de#include <stdlib.h>
.fonte
A
exit
função é declarada no cabeçalho stdlib, então você precisa terna parte superior do seu programa para poder usar
exit
.Observe também que isso
exit
leva um argumento inteiro, então você não pode chamá-lo comoexit()
, você deve chamar comoexit(0)
ouexit(42)
. 0 geralmente significa que o programa foi concluído com êxito e valores diferentes de zero são usados como códigos de erro.Existem também macros predefinidas
EXIT_SUCCESS
eEXIT_FAILURE
, por exemplo,exit(EXIT_SUCCESS);
fonte
exit
leva um argumento inteiro, mas explicar por que leva um argumento inteiro e que alguns compiladores exigem o explícito#include <stdlib.h>
.exit(int code);
é declarado em,stdlib.h
então você precisa de umAlém disso:
- Você não tem nenhum parâmetro para o
exit()
, é necessárioint
fornecer um.- Grave este livro, ele usa o
goto
que é (para todos menos os hackers do kernel do Linux) ruim, muito, muito , MUITO ruim.Editar:
Oh, e
é ruim também, é:
fonte
goto
ocasionalmente é a coisa certa a fazer (e o kernel do Linux fornece muitos exemplos disso, mas não é o único código que pode usá-lo). Mas o exemplo de OP claramente não é um desses casos, então sim, esse livro deveria ser queimado :).Tente sair do homem .
Óh, e:
fonte
o
exit()
função é um tipo de função com um tipo de retorno sem um argumento. É definido pelo arquivo de cabeçalho stdlib.Você precisa usar
( exit(0) or exit(EXIT_SUCCESS))
ou(exit(non-zero)
ouexit(EXIT_FAILURE) )
.fonte
O exemplo a seguir mostra o uso da
exit()
função.Resultado
fonte
Você deve adicionar uma linha com
#include <stdlib.h>
para incluir esse arquivo de cabeçalho eexit
deve retornar um valor para atribuir algum inteiro emexit(any_integer)
.fonte
Além de retornar um código de saída para o processo pai -
No UNIX, um aspecto importante que acho que foi deixado de fora é que exit () nas primeiras chamadas (na ordem reversa) todas as funções, que foram registradas pela chamada atexit ().
Consulte SUSv4 para obter detalhes.
fonte
em Unix como sistemas operacionais, a saída pertence ao grupo de chamadas do sistema. chamadas de sistema são chamadas especiais que permitem que o código do usuário (seu código) chame o código do kernel. portanto, a chamada de saída realiza algumas ações de limpeza específicas do sistema operacional antes de retornar o controle ao sistema operacional e encerra o programa.
Alguns compiladores fornecerão o mesmo opcode de ambos os exemplos, mas outros não. Por exemplo, opcode da primeira função não incluirá nenhum tipo de opcode de posicionamento de pilha que será incluído no segundo exemplo como para qualquer outra função. Você pode compilar os dois exemplos e desmontá-los e verá a diferença.
Você pode usar a saída de qualquer parte do seu código e certificar-se de que o processo seja encerrado. Não se esqueça de incluir o parâmetro inteiro.
fonte
Grave o arquivo de cabeçalho
#include<process.h>
e substituaexit();
porexit(0);
. Isso definitivamente funcionará no Turbo C; para outros compiladores, não sei.fonte
exit
função é declarada em<stdlib.h>
.Prática de programação ruim. Usar uma função goto é um completo não não na programação C.
Também inclua o arquivo de cabeçalho stdlib.h escrevendo
#include <iostream.h>
para usar aexit()
função. Lembre-se também de que a função exit () recebe um argumento inteiro. Useexit(0)
se o programa foi concluído com êxito e /exit(-1)
ou saiu da função com qualquer valor diferente de zero como argumento se o programa tiver erro.fonte
<iostream.h>
é específico para C ++ e não está relacionado ao<stdlib.h>
cabeçalho que é realmente necessário. Os argumentos única portáteis àexit
função são0
,EXIT_SUCCESS
eEXIT_FAILURE
. O uso de qualquer valor diferente de zero para denotar falha é específico para sistemas do tipo UNIX (e provavelmente alguns outros); não confie nele em código portátil.Inclua
stdlib.h
no seu cabeçalho e, a seguir, chameabort();
em qualquer lugar onde deseja sair do programa. Como isso:Quando o usuário entra, o switch aceita isso e passa para o caso 3 em que você chama a
abort
função. Ele sairá da tela imediatamente após pressionar a tecla Enter.fonte
abort
não é a coisa apropriada para chamar aqui, ele não chamaráatexit
manipuladores ou liberará buffers de arquivo abertos. Deve ser usado apenas para finalização anormal do programa, por exemplo, declarações falhadas, etc. Para finalização normal do programa,exit
deve ser usado.Use process.h em vez de stdlib e iostream ... Funcionará 100%.
fonte
<iostream>
cabeçalho é específico para C ++; a pergunta é sobre C.