Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 退出控制台、“FreeConsole(void)”、“return 0”或“exit(exit_SUCCESS)”哪个选项更好?_C++_C_Function_Winapi_Mingw32 - Fatal编程技术网

C++ 退出控制台、“FreeConsole(void)”、“return 0”或“exit(exit_SUCCESS)”哪个选项更好?

C++ 退出控制台、“FreeConsole(void)”、“return 0”或“exit(exit_SUCCESS)”哪个选项更好?,c++,c,function,winapi,mingw32,C++,C,Function,Winapi,Mingw32,我知道两者之间的区别。 我想知道它们与FreeConsole有何不同 是一个API函数 作用域:主函数返回是C语言中的一条语句 退出成功是一个函数调用 您希望在C中使用哪个退出程序?为什么?在C中,调用exit相当于从main返回 在C++中,调用Exchange会绕过堆栈展开,因此析构函数不会被正确调用,你几乎总是想避免它。 FreeConsole释放控制台而不退出程序。释放控制台后,进程可以继续执行分离。因此,它实际上甚至不接近于其他两个。当然,FreeConsole是一个Win32 API

我知道两者之间的区别。 我想知道它们与FreeConsole有何不同

是一个API函数

作用域:主函数返回是C语言中的一条语句

退出成功是一个函数调用

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

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

在C++中,调用Exchange会绕过堆栈展开,因此析构函数不会被正确调用,你几乎总是想避免它。 FreeConsole释放控制台而不退出程序。释放控制台后,进程可以继续执行分离。因此,它实际上甚至不接近于其他两个。当然,FreeConsole是一个Win32 API函数,因此使用它也会使代码不可移植。

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

在C++中,调用Exchange会绕过堆栈展开,因此析构函数不会被正确调用,你几乎总是想避免它。 FreeConsole释放控制台而不退出程序。释放控制台后,进程可以继续执行分离。因此,它实际上甚至不接近于其他两个。当然,FreeConsole是一个Win32 API函数,因此使用它也会使代码不可移植

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

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

在main中,我将使用return来确保局部变量被销毁。退出不会那么做。虽然这是C++的习惯;在C语言中,这没有什么区别

要从其他函数结束程序,return将不起作用,因此我将使用exit。但前提是我确信在那一点上结束这个项目是有意义的

在我看来,返回和退出是一样的。对吗

从主要的,几乎。return将在结束程序之前销毁局部变量;退出不会

只适用于C++;在C语言中,没有任何东西有析构函数,它们实际上是相同的。也许你应该一次只问一种语言;我一开始没有注意到你用两种不同的语言给这个问题加了标签

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

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

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

在main中,我将使用return来确保局部变量被销毁。退出不会那么做。虽然这是C++的习惯;在C语言中,这没有什么区别

要从其他函数结束程序,return将不起作用,因此我将使用exit。但前提是我确信在那一点上结束这个项目是有意义的

在我看来,返回和退出是一样的。对吗

从主要的,几乎。return将在结束程序之前销毁局部变量;退出不会

只适用于C++;在C语言中,没有任何东西有析构函数,它们实际上是相同的。也许你应该一次只问一种语言;我一开始没有注意到你用两种不同的语言给这个问题加了标签


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

return仅在从main调用时退出程序,因此它与exit不同。@Luchian Grigore抱歉。我已经修正了这个问题,调用exit的可能重复不调用局部变量的析构函数;从主站回来。根据文档,FreeConsole根本不会终止这个过程;它只是将其与控制台断开连接。如果从main调用,return只会退出程序,因此它与exit不同。@Luchian Grigore抱歉。我已经修正了这个问题,调用exit的可能重复不调用局部变量的析构函数;从主站回来。根据文档,FreeConsole根本不会终止这个过程;它只是将其与控制控制台断开连接。FreeConsole显然也是不可移植的。@JamesMcLaughlin:是的,这似乎很明显,但正如您所暗示的,它可能值得明确提及。FreeConsole显然也是不可移植的。@JamesMcLaughlin:是的,这似乎很明显,但正如您所暗示的,这可能值得一提。感谢你的回答。这真的很有帮助。
谢谢你的回答。这真的很有帮助-