當C++程序失敗時返回的值是多少?我已閱讀了一些關於此的文章,但沒有明確說明。C++在失敗時是否返回0或NULL?
如果它不返回0,有沒有辦法讓程序在失敗時返回0或NULL?我有一些關於std :: nothrow的東西,但到目前爲止還沒有找到實際的例子。任何人都可以向我澄清這一點?
當C++程序失敗時返回的值是多少?我已閱讀了一些關於此的文章,但沒有明確說明。C++在失敗時是否返回0或NULL?
如果它不返回0,有沒有辦法讓程序在失敗時返回0或NULL?我有一些關於std :: nothrow的東西,但到目前爲止還沒有找到實際的例子。任何人都可以向我澄清這一點?
該標準定義了具有明顯含義的EXIT_SUCCESS
和EXIT_FAILURE
錯誤代碼。可以將它們傳遞給exit()
函數,或者使用main
函數中的return
聲明明確返回。您可以包裝整個main
功能,如
int main() try {
...
} catch(...) {
return EXIT_SUCCESS;
}
您的問題是不清楚的。
通常認爲程序成功時返回0,否則返回非零值。
您從主函數返回設置返回值:
int main(int argc, char ** argv){
return 0; // Finish with success
}
或通過將返回代碼爲exit(int)
功能。
另外值得注意的是,NULL
被精確定義爲(void*)0
,在討論指針時使用,而不是整數。如果你不明白這是什麼意思,請閱讀一個體面的C教程。
NULL是宏,並將其是相同SA 0,它的定義如下所示:
#define NULL 0
當程序失敗它默認信令的操作系統程序失敗返回1
。 如果返回值大於1,則由寫入該程序的程序員完成。
如果程序執行完成,它總是retun的0. 在程序失敗時,你不應該重置除0以外的值,因爲你不知道它是否失敗。
如果返回值低於0,那也意味着失敗。 所以只有成功值是0或NULL是相同的。
成功運行通常有錯誤代碼0
,除0
以外的任何其他指示都表示某種錯誤。
Error code Value Description
ERROR_SUCCESS 0 The action completed successfully.
ERROR_INVALID_DATA 13 The data is invalid.
ERROR_INVALID_PARAMETER 87 One of the parameters was invalid.
更多:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368542(v=vs.85).aspx
「這些錯誤代碼由Windows Installer函數返回」。錯誤的域名。 – MSalters 2012-01-09 07:53:23
的問題是有點不清楚。您從main
返回的值恰恰是您傳遞給main
中的return
聲明的值。對此沒有其他可以說的。
現在,你應該問什麼問題?有兩個方面:一個是C++端,另一個是主機端(即操作系統)。
您無法控制給定的操作系統如何處理啓動的程序的錯誤狀況。唯一令C++標準保證此:
如果您main
回報0
,EXIT_SUCCESS
,或者根本沒有,那麼程序在信號成功地結束;和
如果您的main
返回EXIT_FAILURE
,那麼程序以信號失敗的方式結束。
程序的實際返回值完全取決於平臺,即操作系統和運行時環境。
例如,在Linux上的成功是經由一個非零值經由值0和故障信號的,通過簡單地的main()
值返回回OS(並限定EXIT_SUCCESS
作爲所以可以執行一個C或C++程序0
)。其他平臺可能會選擇不同的語義!
0是成功的價值。 – 2012-01-08 14:51:45
你的意思是程序的退出狀態?如果是,爲什麼你的程序總是返回'EXIT_SUCCESS'很重要?如果你在Linux上,你可以在Makefile或Shellscript:'program ||中使用它真正的',這總是成功的。 – 2012-01-08 14:51:52
不知道我明白你的意思是「返回值」,如果這是程序的退出代碼,0(非空,它不是指針)通常是_success_的標誌,而不是失敗。 – Mat 2012-01-08 14:52:16