问题描述
|
将-1用作枚举值的无效值(对于从0或更大的枚举开始)是一个不好的主意。对于未初始化的值或不再具有有效值的值。
如何测试函数如何处理无效
#define INVALID_ENUM_VALUE -1
如果将随机uint值设置为未初始化/无效(例如,资源ID),该怎么办?
#define INVALID_UNINT_VALUE -1
环绕是否有潜在问题?如果程序不是很复杂并且不能长时间运行,则有效整数不太可能具有该值。我应该使用UINT_MAX吗?放弃并只使用布尔值来跟踪有效状态?
解决方法
如果所有整数都是代码中的好值(例如用于加法),则使用-1(或任何数字值)表示错误或未知数是没有意义的-您需要使用其他某种机制,或只是忽略错误。
, 这是我使用的方法:
如果您使用的是
enums
,请为“无效状态”添加另一个值
如果您有一个返回returns3ѭ的函数,则可以:
返回带有额外字段的struct
(例如valid_result
或error
),或者
将指针指向您为结果修改的“ 3”并让返回值报告错误