从类型'int'分配类型'memstruct'时不兼容的类型

时间:2015-10-23 12:56:10

标签: c struct compiler-errors

我在C中为以下行输入错误“从类型'int'分配类型'memstruct'时出现”不兼容的类型:

result1 = getValueFromBind(interpret(t->ptr1));.

result1和function的声明如下:

memstruct result1;
memstruct getValueFromBind(memstruct bind);

此外,memstruct函数定义如下:     typedef union Constant {            int intval;            char * strval;     }不变;     typedef struct memstruct {         int类型;         恒定价值;     } memstruct;

编辑:getValueFromBind函数在简单检查后返回bind或NULL。        解释返回memstruct。此外,错误显示在C中的分配中。

以下是极简主义示例(@gsamaras):http://ideone.com/Rb8ZCd

正如dsh回答的那样,解决了程序中的错误

2 个答案:

答案 0 :(得分:6)

您缺少功能getValueFromBind()的{​​{3}}。在C中,由于历史原因,假定未声明的函数返回类型int。在使用函数forward declaration之前声明它,然后编译器将知道正确的返回类型。

答案 1 :(得分:2)

你可以在main()知道它之前使用这个函数,所以你可以像这样声明它:

#include  <stdio.h>

typedef struct memstruct{
    int type;
}memstruct;

memstruct interpret(memstruct t); // forward declaration

int main(){
    memstruct t1,t2;
    t1.type = 1;
    t2 = interpret(t1);
    return 1;
}

memstruct getValueFromBind(memstruct bind){
    return bind;
}

memstruct interpret(memstruct t){
    memstruct result1;
    result1 = getValueFromBind(t);
    return result1;
}

或者您可以在interpret()之前移动main()的整个实施。但是,它应该在struct之后,因为你在函数中使用它。

您可能需要查看此内容:Function Declaration and Function Prototypes