Which is a better choice to exit a Console, “FreeConsole (void)”, “return 0”, or “exit (EXIT_SUCCESS)”?
我知道return和exit()之间的区别。我想知道它们与FreeConsole()有什么不同。
FreeConsole()是一个API函数
(scope: main function) return是c中的一个陈述。
exit (EXIT_SUCCESS)是一个函数调用。
您希望在C中使用哪个来退出程序,为什么?
- return只在从main调用时退出程序,所以它与exit不同。
- @卢西安·格里戈尔对不起。我修正了这个问题
- 主()中的RETURN语句与EXIT()可能重复
- 调用exit并不调用局部变量的析构函数;从main返回则调用。根据文档,FreeConsole根本不终止进程,它只是将进程与控制台断开。
在C语言中,调用exit相当于从main返回。
在C++中,调用EDCOX1(0)将绕过堆栈展开,因此不会正确调用析构函数(IOW,您几乎总是希望避免它)。
FreeConsole在不退出程序的情况下释放控制台。释放控制台后,进程可以继续分离执行。因此,它甚至不接近于其他两个的任何一个。当然,FreeConsole是一个win32 API函数,因此使用它也会使代码不可移植。
- 显然,FreeConsole也是不可移植的。
- @詹姆斯克劳格林:是的,这似乎很明显,但正如你所暗示的,这可能值得明确提及。
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中,没有任何析构函数,它们的效率是相同的。也许你应该一次把你的问题限制在一种语言上;我最初没有注意到你用两种不同的语言标记了这个问题。)
从其他函数来看,它们显然完全不同。