[英]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中使用哪个退出程序,为什么?
在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.