C ++程序失败时返回的价值是多少?我已经阅读了一些关于此的文章,但没有明确说明。
如果它没有返回0,有没有办法让程序在失败时返回0或NULL?关于std :: nothrow我有点红,但到目前为止还没有找到实际的例子。任何人都可以向我澄清这个吗?
答案 0 :(得分:9)
该标准定义了具有明显含义的EXIT_SUCCESS
和EXIT_FAILURE
错误代码。它们可以传递给exit()
函数,或者使用return
函数中的main
语句显式返回。您可以将整个main
函数包装为
int main() try {
...
} catch(...) {
return EXIT_SUCCESS;
}
你的问题不清楚。
答案 1 :(得分:4)
就我而言,NULL只是一个0的宏。
在stdlib.h中:
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
我复制此内容的source(德语)也声明Stroustrup不推荐使用NULL。
答案 2 :(得分:1)
这个问题有点不清楚。您从main
返回的值恰好是您传递给return
中main
语句的值。关于那个,没有别的可以说了。
现在,你真的应该问什么问题?有两个方面:一个是C ++端,另一个是主机端(即操作系统)。
您无法控制任何给定的操作系统如何处理它启动的程序的错误情况。 C ++标准唯一保证的是:
如果您的main
返回0
,EXIT_SUCCESS
或根本没有,那么该程序会以表示成功的方式结束;以及
如果main
返回EXIT_FAILURE
,则程序以表示失败的方式结束。
程序的实际返回值完全取决于平台,即操作系统和运行时环境。
例如,在Linux上成功通过值0发出信号并通过非零值发生故障,因此只需将main()
的值返回给操作系统即可执行C或C ++程序(和将EXIT_SUCCESS
定义为0
)。其他平台可能会选择不同的语义!
答案 3 :(得分:0)
通常假设程序成功时返回0,否则返回非零值。
您可以通过从main函数返回来设置返回值:
int main(int argc, char ** argv){
return 0; // Finish with success
}
或将返回码传递给exit(int)
函数。
另外值得注意的是,NULL
被精确定义为(void*)0
,并且在讨论指针时使用,而不是整数。如果您不明白它的含义,请阅读一本不错的C教程。
答案 4 :(得分:0)
NULL是宏,它与sa 0相同,它的定义如下:
#define NULL 0
当程序失败时,默认返回1,表示程序失败的操作系统。 如果返回值大于1,则由编写该程序的程序员完成。
如果程序执行sucessefuly它总是重新调整为0。 你不应该在程序失败时重新调整0以外的值,因为你不知道它是否失败。
如果返回值低于0,则表示失败。 所以只有成功值为0或NULL才是相同的。
答案 5 :(得分:-1)
成功运行通常会出现错误代码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