使用exit()函数

时间:2010-03-11 13:21:05

标签: c

我想知道如何以及何时可以像我书中的程序一样使用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:调用未定义的函数exit()

另外,我想知道如何创建一个选项来关闭程序运行的窗口?例如,我制作了一个菜单驱动的程序,它有几个选项,其中一个是“退出菜单”。如何退出程序(即关闭窗口)?

13 个答案:

答案 0 :(得分:157)

请尝试使用exit(0);exit函数需要一个整数参数。不要忘记#include <stdlib.h>

答案 1 :(得分:79)

exit函数在stdlib头中声明,因此您需要

#include <stdlib.h>

位于程序顶部,以便能够使用exit

另请注意,exit采用整数参数,因此您无法像exit()那样调用它,您必须调用exit(0)exit(42)。 0通常表示您的程序成功完成,非零值用作错误代码。

还有预定义的宏EXIT_SUCCESSEXIT_FAILURE,例如exit(EXIT_SUCCESS);

答案 2 :(得分:11)

exit(int code);stdlib.h中声明,因此您需要

#include <stdlib.h>

此外:
- 您没有exit()的参数,需要int,因此请提供一个。{ - 烧掉这本书,它使用的goto(除了Linux内核黑客之外的所有人)都很糟糕,非常非常,非常糟糕。

编辑:
哦,

void main()

也很糟糕,它是:

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

答案 3 :(得分:11)

尝试man exit


哦,并且:

#include <stdlib.h>

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

答案 4 :(得分:7)

exit()函数是一种函数,其返回类型没有参数。它由stdlib头文件定义。

您需要使用( exit(0) or exit(EXIT_SUCCESS))(exit(non-zero)exit(EXIT_FAILURE) )

答案 5 :(得分:4)

以下示例显示了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;
}

输出

  

开始该计划....
  退出计划......

答案 6 :(得分:2)

您必须添加一行#include <stdlib.h>以包含该头文件 并且exit必须返回一个值,因此在exit(any_integer)中分配一些整数。

答案 7 :(得分:2)

除了将退出代码返回到父进程 -

在UNIX中,我认为遗漏的一个重要方面是,exit()在第一次调用(以相反的顺序)所有那些由atexit()调用注册的函数。

详情请参阅SUSv4。

答案 8 :(得分:1)

unix like操作系统上的

属于系统调用组。系统调用是特殊调用,它使用户代码(您的代码)能够调用内核代码。因此,在将控制权返回给操作系统之前,退出调用会进行一些特定于操作系统的清理操作,它会终止程序。

#include <stdlib.h>

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

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

有些编译器会从这两个示例中给出相同的操作码,但有些编译器不会。例如,来自第一函数的操作码将不包括任何类型的堆栈定位操作码,其将包括在第二示例中,类似于任何其他功能。您可以编译这两个示例并对其进行反汇编,您将看到其中的差异。

您可以使用代码的任何部分退出,并确保该进程终止。别忘了包含整数参数。

答案 9 :(得分:-2)

编写标题文件#include<process.h>并将exit();替换为exit(0);。这肯定适用于Turbo C;对于我不知道的其他编译器。

答案 10 :(得分:-3)

糟糕的编程习惯。在C编程中使用goto函数是完全没有的 通过编写#include <iostream.h>来使用exit()函数,还包括头文件stdlib.h。还要记住exit()函数接受一个整数参数。如果程序成功完成,则使用exit(0)并且如果程序有错误,则使用任何非零值的退出函数作为参数使用exit(-1)

答案 11 :(得分:-4)

在标题中加入stdlib.h,然后在您要退出程序的任何地方致电abort();。像这样:

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

当用户进入交换机时接受此并将其提供给您调用abort功能的案例3。按下回车键后它会立即退出屏幕。

答案 12 :(得分:-6)

使用process.h而不是stdlib和iostream ......它将100%工作。