Использование функции exit()

Я хочу знать, как и когда я могу использовать функцию exit(), такую ​​как программа в моей книге:

#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");
}

Когда я запустил его, он показывает ERROR: вызов функции undefined exit().

Кроме того, я хочу знать, как я могу создать параметр для закрытия окна, в котором запускается программа? Например, я сделал программу, управляемую меню, которая имела несколько опций, и один из них был "выйти из меню". Как я могу сделать этот выход из программы (т.е. Закрыть окно)?

Ответ 1

Попробуйте вместо этого использовать exit(0);. Функция exit ожидает целочисленный параметр. И не забудьте #include <stdlib.h>.

Ответ 2

Функция exit объявляется в заголовке stdlib, поэтому вам нужно иметь

#include <stdlib.h>

в верхней части вашей программы, чтобы иметь возможность использовать exit.

Обратите внимание, что exit принимает целочисленный аргумент, поэтому вы не можете называть его как exit(), вы должны называть exit(0) или exit(42). 0 обычно означает, что ваша программа успешно завершена, а ненулевые значения используются как коды ошибок.

Существуют также предопределенные макросы EXIT_SUCCESS и EXIT_FAILURE, например. exit(EXIT_SUCCESS);

Ответ 3

exit(int code); объявляется в stdlib.h, поэтому вам нужно

#include <stdlib.h>

также:
- У вас нет параметров для exit(), для этого требуется int, чтобы обеспечить его.
- Запишите эту книгу, она использует goto, которая (для всех, кроме Linux-хакеров) плохо, очень, очень, очень плохо.

Edit:
О, и

void main()

тоже плохо, это:

int main(int argc, char *argv[])

Ответ 4

Попробуйте man exit.


Oh и:

#include <stdlib.h>

int main(void) {
  /*  ...  */
  if (error_occured) {
    return (EXIT_FAILURE);
  }
  /*  ...  */
  return (EXIT_SUCCESS);
}

Ответ 5

Функция exit() - это тип функции с возвращаемым типом без аргумента. Он определяется файлом заголовка stdlib.

Вам нужно использовать ( exit(0) or exit(EXIT_SUCCESS)) или (exit(non-zero) или exit(EXIT_FAILURE) ).

Ответ 6

В следующем примере показано использование функции exit().

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    printf("Start of the program....\n");
    printf("Exiting the program....\n");
    exit(0);
    printf("End of the program....\n");
    return 0;
}

Выход

Начало программы....
Выход из программы....

Ответ 7

Вы должны добавить строку с #include <stdlib.h>, чтобы включить этот заголовочный файл и exit должно возвращать значение, поэтому назначьте некоторое целое число в exit(any_integer).

Ответ 8

В дополнение к возврату кода выхода в родительский процесс -

В UNIX важным аспектом, который, как мне кажется, остался без внимания, является то, что exit() при первом вызове (в обратном порядке) выполняет все те функции, которые были зарегистрированы вызовом atexit().

Подробнее см. SUSv4.

Ответ 9

в unix как выход операционной системы принадлежит группе системных вызовов. системные вызовы - это специальные вызовы, которые позволяют коду пользователя (вашему коду) вызывать код ядра. поэтому вызов exit выполняет некоторые действия по очистке ОС перед возвратом управления в ОС, он завершает работу программы.

#include <stdlib.h>

// example 1
int main(int argc, char *argv){
  exit(EXIT_SUCCESS);
}

// example 2
int main(int argc, char *argv){
  return 0;
}

Некоторые компиляторы предоставят вам тот же код операции из обоих этих примеров, но некоторые не будут. Например, код операции из первой функции не будет содержать какой-либо код операции позиционирования стека, который будет включен во второй пример, как и для любой другой функции. Вы можете скомпилировать оба примера и разобрать их, и вы увидите разницу.

Вы можете использовать выход из любой части вашего кода и быть уверенным, что процесс завершается. Не забудьте включить целочисленный параметр.

Ответ 10

Запишите файл заголовка #include<process.h> и замените exit(); на exit(0);. Это определенно будет работать в Turbo C; для других компиляторов я не знаю.

Ответ 11

Плохая практика программирования. Использование функции goto - это полное отсутствие в программировании C.
Также включите заголовочный файл stdlib.h, написав #include <iostream.h> для использования функции exit(). Также помните, что функция exit() принимает целочисленный аргумент. Используйте exit(0), если программа завершилась успешно и exit(-1) или функция выхода с любым ненулевым значением в качестве аргумента, если программа имеет ошибку.

Ответ 12

Включите stdlib.h в свой заголовок, а затем вызовите abort(); в любом месте, из которого вы хотите выйти из своей программы. Вот так:

switch(varName)
{
    case 1: 
     blah blah;
    case 2:
     blah blah;
    case 3:
     abort();
}

Когда пользователь входит в коммутатор, он принимает это и передает его в случай 3, где вы вызываете функцию abort. Он выйдет из экрана сразу после нажатия клавиши ввода.

Ответ 13

Используйте process.h вместо stdlib и iostream... Он будет работать на 100%.