有没有一种很好的方法来强制C中的类型不兼容?

时间:2010-06-29 11:07:21

标签: c type-conversion typechecking

出于类型检查的目的,我想在

的行上定义一个函数
void myfunc(type1 a, type2 b)
{
...
}

其中type1type2都是uint8_t的typedefed。到目前为止一切顺利,但出于理智和检查目的(想想DbC),我想阻止调用函数,第一个参数的值为type2,第二个参数的值为type1。可悲的是,C的隐式类型转换在这里反对我。有谁知道一种方式?

2 个答案:

答案 0 :(得分:6)

您可以将两种类型包装在Struct中。

typedef struct {
    uint8_t data;
} type1;

typedef struct {
    uint8_t data;
} type2;

编辑: 我不喜欢它,因为你现在必须使用a.data而不是

答案 1 :(得分:0)

我认为你可以使用struct包装你的类型,然后将指针传递给这些结构。