我知道return
vs exit()
之间的区别
我想知道它们与FreeConsole()
的区别。
FreeConsole()
是API函数
(scope: main function) return
是C语句。
exit (EXIT_SUCCESS)
是一个函数调用。
您希望在C中使用哪个退出程序?为什么?
答案 0 :(得分:6)
在C中,调用exit
相当于从main
返回。
在C ++中,调用exit
将绕过堆栈展开,因此不会正确调用析构函数(IOW,你几乎总是想避免它)。
FreeConsole
在不退出程序的情况下释放控制台。在释放控制台后,该过程可以继续执行分离。因此,它实际上甚至不等于其他两个中的任何一个。当然,FreeConsole
是Win32 API函数,因此使用它也会使代码不可移植。
答案 1 :(得分:5)
您想在C中使用哪个退出程序?为什么不呢?
我不会使用FreeConsole()
,因为我从不为Microsoft平台编程;如果您希望代码可移植,则不应使用它。从您链接到的文档中,它似乎做了一些完全不同的事情(在不结束程序的情况下从控制台分离),因此在任何情况下都无法使用它来结束程序。
在main
内,我会使用return
来确保销毁局部变量。 exit()
不会这样做。 (虽然这是C ++的习惯;在C语言中,它没什么区别。)
要从其他功能结束程序,return
将无效,因此我会使用exit()
。但是,只有当我确信在那时结束该计划是有意义的时候。
在我看来,return和exit()是一样的。这是对的吗?
几乎来自main()
。 return
会在结束程序之前销毁局部变量; exit()
不会。
(仅适用于C ++;在C中,没有任何析构函数,它们效率相同。也许你应该一次将你的问题限制为一种语言;我最初没有注意到你已经标记了两种不同语言的问题。)
从其他功能来看,它们显然根本不相同。