C 返回0或1表示成功
按照这个思路: 据说成功的标准返回码是0 我想知道在某些情况下,用另一种方式做是否更合乎逻辑 例如: 如果我想测试这样的3个条件:C 返回0或1表示成功,c,function,return-value,C,Function,Return Value,按照这个思路: 据说成功的标准返回码是0 我想知道在某些情况下,用另一种方式做是否更合乎逻辑 例如: 如果我想测试这样的3个条件: if (action1() && action2() && action3()) 在本例中,我认为使用返回代码“1”来获得成功更具可读性 检查故障状况也非常直观: if !(action1() && action2() && action3()) 但是,模块中的其他功能不需要这样的顺序评估。 这是
if (action1() && action2() && action3())
在本例中,我认为使用返回代码“1”来获得成功更具可读性
检查故障状况也非常直观:
if !(action1() && action2() && action3())
但是,模块中的其他功能不需要这样的顺序评估。
这是在整个模块中使用“1”表示成功,使用“0”表示失败的一个好理由吗?
或者,有更好的替代方法吗?
“0”作为故障
您如何通知用户错误代码(导致故障的原因)?您的示例返回1
表示“真”。。。不是为了“成功”。假设您想要一个打开文件的函数:(您可以返回1
表示“true”,或者返回0
表示成功,1
表示未找到文件,2
表示网络故障,3
表示文件名中的坏字符,4
表示拒绝访问。。。(只有0
表示成功)@KamilCuk每个函数都会打印它产生的错误,没有比这个更高的层了。strcmp()
如果字符串匹配,则返回0
,这是学习者常见的陷阱。OTOHisupper()
更直观。您可以使用宏,如#define ACTION\u OK 0
使代码更可读,因此(action1()==ACTION\u OK)
,或者使用enum
定义各种结果。“0”作为失败
您如何通知用户错误代码(关于导致失败的原因)?您的示例返回1
表示“true”…而不是“success”。假设您想要一个打开文件的函数:(您可以返回1
表示“true”或)返回0
表示成功,1
表示找不到文件,2
表示网络故障,3
表示文件名中的坏字符,4
表示访问被拒绝,…(只有0
表示成功)@KamilCuk每个函数都会打印它产生的错误,没有比这一个更高的层。strcmp()
如果字符串匹配,则返回0
,这是学习者的常见陷阱。OTOHisupper()
更直观。您可以使用宏,如#define ACTION\u OK 0
使代码更可读,因此(action1()==ACTION\u OK)
,或者使用enum
定义各种结果。