繁体   English   中英

退出控制台,“ FreeConsole(void)”,“返回0”或“退出(EXIT_SUCCESS)”是哪个更好的选择?

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

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

  1. FreeConsole()是一个API函数

  2. (scope: main function) return是C中的一条语句。

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

您想在C中使用哪个退出程序,为什么?

在C语言中,调用exit等效于从main返回。

在C ++中,调用exit将绕过堆栈展开,因此析构函数将无法正确调用(IOW,您几乎总是希望避免这种情况)。

FreeConsole释放控制台而不退出程序。 释放控制台后,进程可以继续执行分离操作。 这样的话,它实际上甚至还没有接近其他两个。 当然, FreeConsole是Win32 API函数,因此使用它还会使代码不可移植。

您想在C语言中使用哪个退出程序? 为什么和为什么不呢?

我不会使用FreeConsole()因为我从未为Microsoft平台编程。 如果您希望代码可移植,则不应使用它。 从您链接到的文档来看,它似乎做了完全不同的事情(与控制台分离而不结束程序),因此无论如何您都不能使用它来结束程序。

main ,我将使用return来确保销毁局部变量。 exit()不会那样做。 (尽管这是C ++的习惯;在C语言中,这没有什么区别)。

要从其他功能结束该程序, return将不起作用,因此我将使用exit() 但是只有在我确信在此时结束程序才有意义。

我认为return和exit()是相同的。 这是正确的吗?

main() return将在结束程序之前销毁局部变量; exit()不会。

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

从其他功能来看,它们显然根本不一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM