C++ 退出控制台、“FreeConsole(void)”、“return 0”或“exit(exit_SUCCESS)”哪个选项更好?
我知道两者之间的区别。 我想知道它们与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++ 退出控制台、“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
只适用于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:是的,这似乎很明显,但正如您所暗示的,这可能值得一提。感谢你的回答。这真的很有帮助。
谢谢你的回答。这真的很有帮助-