在追踪我的软件中的一个错误时,我遇到了一种奇怪的行为,并且想知道是否有人会有一些后见之明。
这是代码(它编译并且没有任何运行时错误):
await
为什么这行编译;它错过了一个等号:
#define ERR_OK 0
#define ERR_NOT_OK -41
int some_class::some_function(uint32_t verbose){
int ret_value = ERR_OK;
if (some_condition) {
ret_value ERR_NOT_OK;
}
return ret_value;
}
Xcodebuild日志:
ret_value ERR_NOT_OK;
编辑:删除分号并将#define ERR_NOT_OK 1更改为#define ERR_NOT_OK -41;添加了xcodebuild日志。
答案 0 :(得分:4)
如果ERR_NOT_OK
定义为-41
,那么
ret_value ERR_NOT_OK;
替换为
ret_value -41;
这是一个有效的表达式语句,即使它实际上是一个无操作。最初打算作为一元-
的内容在此上下文中被解释为二进制-
。
这就是将其定义为
的好主意#define ERR_NOT_OK (-41)