您应该在C中使用失败的函数调用返回什么值?

oxu*_*ser 11 c

可能重复:
C代码中的错误处理

假设你有一个功能:

int MightWork(){
  // if it works
  return x;

  // if it fails
  return y;

}
Run Code Online (Sandbox Code Playgroud)

x和y应该是什么?

因为我有另一个功能:

if (MightWork){
  // do stuff #1
}else{
  // do stuff #2
}
Run Code Online (Sandbox Code Playgroud)

我知道对于这个特定的例子,使用返回值1将使第二个代码块"do stuff#1"并且使用返回值0将第二个代码块带到"do stuff#2"

我的问题是C中首选的样式是什么?函数的返回值0表示成功,其他任何值表示失败吗?或相反亦然?或者0以下的值?

我想确保我用当前的样式编写我的C代码.谢谢!

mos*_*ear 18

对于非指针成功/失败:

  • 0 =>成功
  • -1 =>失败

对于指针函数:

  • NULL =>失败
  • 其他一切=>成功


Ry-*_*Ry- 5

两者都会用,一般要看能否返回多个错误码。

如果您的函数只会“成功”或“失败”而没有其他信息,我建议您返回0失败和1成功,因为它更简单并且在语义上更有效。

如果您的函数可能因多个状态代码而失败,则唯一的方法是使用0代表不同状态的成功值和其他失败值。