关于c ++:哪个是退出控制台的更好选择,“FreeConsole(void)”,“return 0”或“exit(EXIT_SUCCESS)”?

Which is a better choice to exit a Console, “FreeConsole (void)”, “return 0”, or “exit (EXIT_SUCCESS)”?

我知道returnexit()之间的区别。我想知道它们与FreeConsole()有什么不同。

  • FreeConsole()是一个API函数

  • (scope: main function) return是c中的一个陈述。

  • exit (EXIT_SUCCESS)是一个函数调用。

  • 您希望在C中使用哪个来退出程序,为什么?


    在C语言中,调用exit相当于从main返回。

    在C++中,调用EDCOX1(0)将绕过堆栈展开,因此不会正确调用析构函数(IOW,您几乎总是希望避免它)。

    FreeConsole在不退出程序的情况下释放控制台。释放控制台后,进程可以继续分离执行。因此,它甚至不接近于其他两个的任何一个。当然,FreeConsole是一个win32 API函数,因此使用它也会使代码不可移植。


    Which would you like to use in C to exit a program? Why and why not?

    我不会使用FreeConsole(),因为我从不为Microsoft平台编程;如果您希望代码是可移植的,就不应该使用它。从您链接到的文档中,它似乎做了完全不同的事情(在不结束程序的情况下从控制台分离),因此在任何情况下都不能使用它来结束程序。

    main中,我使用return来确保局部变量被破坏。exit()不会那样做。(虽然这是C++的习惯,但在C语言中却没有什么区别)。

    为了从其他功能结束程序,return将不起作用,所以我将使用exit()。但前提是我确信在那一点上结束程序是有意义的。

    In my opinion, return and exit() are the same. Is it correct?

    几乎是从main()发来的。return会在程序结束前破坏局部变量;exit()不会。

    (只适用于C++;在C中,没有任何析构函数,它们的效率是相同的。也许你应该一次把你的问题限制在一种语言上;我最初没有注意到你用两种不同的语言标记了这个问题。)

    从其他函数来看,它们显然完全不同。