簡體   English   中英

如何干凈地退出混合C / C ++的程序

[英]How to exit a program with mixed C/C++ cleanly

我正在使用C ++連接C程序( main()在C中)。 在我的代碼中的某些點我想停止執行程序。 現在我想知道,我怎么能干凈利落地做到這一點?

目前我調用std::terminate()但更多的是缺乏更好的想法。 讓我煩惱的主要問題是,即使我沒有釋放內存(因為它在程序終止時也被釋放了,對吧?)但是MSVS即時調試器會彈出,我收到一個丑陋的錯誤消息以不尋常的方式終止運行時。

編輯:因為這引起了混亂:在這種情況下,不能從main() return 0

如果您擔心清理和調用destuctors然后

exit(EXIT_SUCCESS); // or EXIT_FAILURE

exitterminateabort之間的最佳選擇。

  • 函數exit調用descructors並清理自動存儲對象(在全局范圍內聲明的對象)。 它還調用傳遞給atexit的函數。

  • 函數abort對異常退出很有用,不會清理任何東西。 它不會調用傳遞給atexit的函數。

  • C中不存在函數terminate 。當您遇到異常並且無法處理它但完成程序時,它很有用。

main函數是它啟動的地方, main函數通常是它應該結束的地方。 如果你使用return 0; 它表明成功退出。

int main(void) {
    //init
    //do stuff
    //deinit
    return 0; // bye bye
}

你也可以使用exit(0); ,但如果您的出口點遍布整個地方,則會使調試變得更加困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM