在Linux中,例如,如果我使用批处理,如果错误代码是0那好,但是C++中的约定是什么?约定结果和代码错误C++ int foo(...)
当int(或bool)等于1时,我们说这是真的,但是在C++中必须返回这样的函数吗?
在Linux中,例如,如果我使用批处理,如果错误代码是0那好,但是C++中的约定是什么?约定结果和代码错误C++ int foo(...)
当int(或bool)等于1时,我们说这是真的,但是在C++中必须返回这样的函数吗?
在C++中,通常使用布尔返回来表示成功为true,而对于失败则为false。
使用整数返回值也很常用,其中零表示成功,非零表示失败或任何其他条件(通常负数表示错误,而正数表示其他结果)。
无论选择哪种方法,重要的是记录它并在整个代码库中保持一致。
还有另外一个约定,其中零是假的且非零是真的。 – 2009-12-10 19:07:21
返回整数的标准C函数通常返回大于或等于零的成功,失败则返回-1。当返回-1时,通常将errno
设置为提供更具体的错误。零表示一般性成功,其中大于零的数字被假定为成功并提供额外的细节。
考虑类似recvfrom()
。返回值-1表示彻底失败,errno
设置为详细代码。返回值为零意味着套接字按顺序关闭,并且额外的调用不会返回数据。大于零的返回值意味着数据已收到并且收到的字节数是返回的数据。
在C及其运行时库0中表示成功(有时需要轮询errno)。
在C++的世界更加丰富多彩:
不要混合使用布尔公约和“0”,结果是非常混乱的代码(见例子)。如果您碰巧需要多个值,则根据情况使用枚举,额外的返回参数或异常。
介绍布尔和 '0' 的代码混淆:
// sorry for abuse of "C" for educational purposes
bool isSame(s1,s2) { return s1==s2; }
int isSame2(s1, s2) { return strcmp(s1.cstr(), s2.cstr()); }
if (isSame(..) && !isSame2(..)) ...
我知道你要问两个问题:
基本答案如下。
通常,程序(主())返回0表示成功,以及其它值 - 错误 - 失败
如果函数可以成功或失败,它是典型地分类为布尔并返回true或false。
如果一个函数可以返回多个值,它通常会返回int或enum值。
尝试抛出异常情况下的例外。
在C++
,使用异常 – KeatsPeeks 2009-12-10 16:20:13