Chcę wiedzieć, jak i kiedy mogę użyć exit()
funkcji takiej jak program w mojej książce:
#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");
}
Kiedy go uruchamiam, pokazuje ERROR: wywołanie niezdefiniowanej funkcji exit () .
Chcę również wiedzieć, jak mogę utworzyć opcję zamknięcia okna, w którym działa program? Na przykład stworzyłem program oparty na menu, który miał kilka opcji, a jedną z nich było „wyjście z menu” . Jak mogę to zamknąć program (tj. Zamknąć okno)?
void main()
OTOH jest po prostu błędny . Tak jakexit();
jest złe, a pomijanie#include <stdlib.h>
jest złe.Odpowiedzi:
Spróbuj użyć
exit(0);
zamiast tego.exit
Funkcja oczekuje parametru całkowitą. I nie zapomnij#include <stdlib.h>
.źródło
exit
Funkcja jest zadeklarowana w nagłówku stdlib, więc trzeba mieću góry programu, aby móc z niego korzystać
exit
.Zauważ również, że
exit
przyjmuje argument będący liczbą całkowitą, więc nie możesz tego nazwać jakexit()
, musisz wywołać jakoexit(0)
lubexit(42)
. 0 zwykle oznacza, że program został pomyślnie zakończony, a wartości niezerowe są używane jako kody błędów.Istnieją również predefiniowane makra
EXIT_SUCCESS
orazEXIT_FAILURE
npexit(EXIT_SUCCESS);
źródło
exit
pobiera argument będący liczbą całkowitą, ale także wyjaśnienie, dlaczego przyjmuje argument będący liczbą całkowitą i że niektóre kompilatory wymagają jawności#include <stdlib.h>
.exit(int code);
jest zadeklarowany,stdlib.h
więc potrzebujesz plikuPonadto:
- Nie masz parametru dla
exit()
, wymagaint
więc podania jednego.- Spal tę książkę, używa,
goto
co jest (dla wszystkich oprócz hakerów jądra Linuksa) złe, bardzo, bardzo , BARDZO złe.Edycja:
Och, i
jest też zły, to:
źródło
goto
od czasu do czasu jest słuszna (a jądro Linuksa dostarcza na to wielu przykładów, ale nie jest to jedyny kod, który może go używać). Ale przykład OP najwyraźniej nie jest jednym z tych przypadków, więc tak, tę książkę należy spalić :).Spróbuj wyjść człowiekowi .
O I:
źródło
exit()
Funkcja jest funkcją typu o typie zwrotnym bez argumentów. Jest definiowany przez plik nagłówkowy stdlib.Musisz użyć
( exit(0) or exit(EXIT_SUCCESS))
lub(exit(non-zero)
lubexit(EXIT_FAILURE) )
.źródło
Poniższy przykład ilustruje użycie
exit()
funkcji.Wynik
źródło
Musisz dodać wiersz z,
#include <stdlib.h>
aby dołączyć ten plik nagłówkowy iexit
musisz zwrócić wartość, więc przypisz jakąś liczbę całkowitą wexit(any_integer)
.źródło
Oprócz zwrócenia kodu zakończenia do procesu nadrzędnego -
W systemie UNIX ważnym aspektem, który moim zdaniem został pominięty, jest to, że exit () przy pierwszym wywołaniu (w odwrotnej kolejności) wszystkich funkcji, które zostały zarejestrowane przez wywołanie atexit ().
Szczegółowe informacje można znaleźć w SUSv4.
źródło
na unixowych systemach operacyjnych wyjście należy do grupy wywołań systemowych. wywołania systemowe to specjalne wywołania, które umożliwiają kodowi użytkownika (Twojemu kodowi) wywołanie kodu jądra. więc exit call wykonuje pewne działania czyszczące specyficzne dla systemu operacyjnego przed zwróceniem kontroli do systemu operacyjnego, kończy działanie programu.
Niektóre kompilatory podadzą ten sam kod operacji z obu tych przykładów, ale niektóre nie. Na przykład kod operacji z pierwszej funkcji nie będzie zawierał żadnego rodzaju kodu operacji pozycjonowania stosu, który zostanie uwzględniony w drugim przykładzie, tak jak w przypadku każdej innej funkcji. Możesz skompilować oba przykłady i zdemontować je, a zobaczysz różnicę.
Możesz użyć wyjścia z dowolnej części kodu i upewnić się, że proces się zakończy. Nie zapomnij dołączyć parametru typu integer.
źródło
Napisz nagłówka pliku
#include<process.h>
i zastąpićexit();
zexit(0);
. To na pewno zadziała w Turbo C; dla innych kompilatorów nie wiem.źródło
exit
Funkcja jest zadeklarowana<stdlib.h>
.Zła praktyka programistyczna. Używanie funkcji goto to kompletne „nie” w programowaniu w C.
Dołącz również plik nagłówkowy stdlib.h, pisząc w
#include <iostream.h>
celu użyciaexit()
funkcji. Pamiętaj też, że funkcja exit () przyjmuje argument będący liczbą całkowitą. Użyj,exit(0)
jeśli program zakończył się pomyślnie iexit(-1)
lub zakończ funkcję z dowolną wartością niezerową jako argumentem, jeśli program ma błąd.źródło
<iostream.h>
jest specyficzny dla C ++ i nie jest powiązany<stdlib.h>
z nagłówkiem, który jest faktycznie potrzebny. Jedyne przenośne argumenty doexit
funkcji są0
,EXIT_SUCCESS
iEXIT_FAILURE
. Użycie dowolnej wartości niezerowej do oznaczenia awarii jest specyficzne dla systemów typu UNIX (i prawdopodobnie niektórych innych); nie polegaj na tym w przenośnym kodzie.Uwzględnij
stdlib.h
w nagłówku, a następnie wywołajabort();
w dowolnym miejscu, w którym chcesz zamknąć program. Lubię to:Gdy użytkownik wejdzie, przełącznik akceptuje to i przekazuje do przypadku 3, w którym wywołujesz
abort
funkcję. Opuści ekran natychmiast po naciśnięciu klawisza Enter.źródło
abort
nie jest właściwą rzeczą do wywoływania tutaj, nie będzie wywoływaćatexit
programów obsługi ani opróżniać buforów otwartych plików. Powinien być używany tylko w przypadku nieprawidłowego zakończenia programu, np. Nieudanych asercji itp. Do normalnego zakończenia programuexit
powinien być używany.Użyj process.h zamiast stdlib i iostream ... Będzie działać w 100%.
źródło
<iostream>
Nagłówek jest specyficzne dla C ++; pytanie dotyczy C.