哪个是退出控制台,"FreeConsole(void)","return 0"或"exit(EXIT_SUCCESS)"的更好选择?

Kev*_*ong 1 c c++ winapi function mingw32

我知道returnvsexit()之间的区别.
我想知道它们有什么不同FreeConsole().

  1. FreeConsole() 是一个API函数

  2. (scope: main function) return 是C中的陈述.

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

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

Jer*_*fin 6

在C中,调用exit等同于返回main.

在C++中,调用exit将绕过堆栈展开,因此不会正确调用析构函数(IOW,你几乎总是想要避免它).

FreeConsole释放控制台而不退出程序.在释放控制台后,该过程可以继续执行分离.因此,它实际上甚至不等于其他两个中的任何一个.当然,FreeConsole是一个Win32 API函数,因此使用它也会使代码变得不可移植.


Mik*_*our 5

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

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

在内部main,我return用来确保破坏局部变量.exit()不会这样做.(虽然这是C++的习惯;在C语言中,它没什么区别).

从其他功能结束程序,return将无法正常工作,所以我会使用exit().但前提是我确信在那时结束该计划是有意义的.

在我看来,return和exit()是一样的.这是对的吗?

main(),差不多.return将在结束程序之前销毁局部变量; exit()惯于.

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

从其他功能来看,它们显然根本不相同.