我正在处理一个具有以下形式的宏的任务。
// Thread identifier type.
typedef int tid_t;
#define TID_ERROR ((tid_t) -1) /* Error value for tid_t. */
然后,一些类型为tid_t的函数将在失败的情况下返回该宏:
tid_t foo()
{
if(fail())
{
return TID_ERROR;
}
}
我无法理解这有多大意义:
a)如何从类型名称tid_t - 1
减去常量?
b)如何返回先前的结果?我认为类型不是数据,因此不能以相同的方式操作它们。
而且,我需要知道的是:
c)调用函数foo
时,如何检查失败?
答案 0 :(得分:3)
它没有返回或操纵某个类型,它返回值 -1
,强制转换为该类型。
要检查错误,请与TID_ERROR宏进行比较。
tid_t result = foo();
if(result == TID_ERROR) { handle error }
答案 1 :(得分:3)
#define TID_ERROR ((tid_t) -1)
它不是从1
中减去tid_t
,而是将-1
强制转换为类型tid_t
,然后将其用作此类型的无效值。
答案 2 :(得分:0)
当编译器编译此代码时:
tid_t foo()
{
if(fail())
{
return TID_ERROR;
}
}
它等于这段代码:
int foo()
{
if(fail())
{
return ((int) -1); // just change the type of `-1` to `int` type.
}
}