2009-12-10 34 views
2

在Linux中,例如,如果我使用批处理,如果错误代码是0那好,但是C++中的约定是什么?约定结果和代码错误C++ int foo(...)

当int(或bool)等于1时,我们说这是真的,但是在C++中必须返回这样的函数吗?

+0

,使用异常 – KeatsPeeks 2009-12-10 16:20:13

回答

0

C++函数或方法可以返回一个bool值,如truefalse。程序(即main函数)必须返回值int,例如0以报告“成功”。

+0

确定,所以主要的结果得到了相同的行为比外壳:-) 谢谢 – AskMan 2009-12-10 16:14:46

+0

是主*的结果是*将由外壳可以看到价值。 – ChrisW 2009-12-10 16:19:50

+0

@Chris - shell所看到的值受'main'返回值影响。尽管它们不一定是相同的价值。尝试返回1,024,你可能会在shell中得到零! – 2009-12-10 16:22:51

5

在C++中,通常使用布尔返回来表示成功为true,而对于失败则为false。

使用整数返回值也很常用,其中零表示成功,非零表示失败或任何其他条件(通常负数表示错误,而正数表示其他结果)。

无论选择哪种方法,重要的是记录它并在整个代码库中保持一致。

+1

还有另外一个约定,其中零是假的且非零是真的。 – 2009-12-10 19:07:21

0

返回整数的标准C函数通常返回大于或等于零的成功,失败则返回-1。当返回-1时,通常将errno设置为提供更具体的错误。零表示一般性成功,其中大于零的数字被假定为成功并提供额外的细节。

考虑类似recvfrom()。返回值-1表示彻底失败,errno设置为详细代码。返回值为零意味着套接字按顺序关闭,并且额外的调用不会返回数据。大于零的返回值意味着数据已收到并且收到的字节数是返回的数据。

2

在C及其运行时库0中表示成功(有时需要轮询errno)。

在C++的世界更加丰富多彩:

  • BOOL成功/失败
  • 枚举,如果有更多的国家
  • 例外...好特殊情况和对象构造/破坏;有时他们是不可用或不允许(主要是嵌入式平台,有时游戏性能最大化)

不要混合使用布尔公约和“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

我知道你要问两个问题:

  • 你怎么在C返回程序状态++
  • 怎么办函数返回C++中的状态

基本答案如下。

通常,程序(主())返回0表示成功,以及其它值 - 错误 - 失败

如果函数可以成功或失败,它是典型地分类为布尔并返回truefalse

如果一个函数可以返回多个值,它通常会返回intenum值。

尝试抛出异常情况下的例外。

在C++