Enums 返回枚举值准则

Enums 返回枚举值准则,enums,Enums,假设所有函数都返回结果状态(就像Microsoft的HRESULT一样)。这些数字在枚举中定义,其中一个值表示一切正常,所有其他值表示某种不正常 直觉上,我的数字OK=0和所有其他=0但是,如果你是一名C程序员(以及其他几种语言),那么这与布尔正好相反 我开始怀疑是否有任何编程指南围绕这一点。一般做法是什么?利与弊是什么?这是因为我参与了一个项目,其中OK=0x01,所有其他失败状态都是!0x01(是的0x0也是一个失败),我们正在封送语言之间的返回值(枚举变为int) 如果零不是错误,其他任何

假设所有函数都返回结果状态(就像Microsoft的HRESULT一样)。这些数字在枚举中定义,其中一个值表示一切正常,所有其他值表示某种不正常

直觉上,我的数字OK=0和所有其他=0但是,如果你是一名C程序员(以及其他几种语言),那么这与布尔正好相反


我开始怀疑是否有任何编程指南围绕这一点。一般做法是什么?利与弊是什么?这是因为我参与了一个项目,其中OK=0x01,所有其他失败状态都是!0x01(是的0x0也是一个失败),我们正在封送语言之间的返回值(枚举变为int)

如果零不是错误,其他任何东西都是错误,那么您可以写入

error = function_that_returns_an_error();

if( error )
    handleError();

这是非常清楚的代码


除此之外,有时负值是错误代码,正值是状态代码(例如“需要更多数据”,然后零就是一切正常

如果他们像普通人一样这样做,那就不是微软;-)我相信它来自程序退出状态-0表示正常,其他表示不正常。它与bool并不是完全相反——在逻辑上下文中,(bool)9是什么?
if( !error )
    allsWell();