从不兼容的指针类型与结构的分配

时间:2015-11-13 05:57:27

标签: c pointers struct incompatibletypeerror

我有一个函数,我在scope.c中有行,并且在第三行失败,指针类型错误不兼容。

struct scope* newScope = malloc(sizeof(struct scope));
newScope->symbols = createSymbolTable();
newScope->st = createSyntaxTree();

scope.h中的结构范围定义为:

struct scope {
    char *id;
    struct symboltable* symbols;
    struct symboltree*  st;
    struct symboltable* strings;
};

syntax.h中函数createSyntaxTree()的原型是

struct syntaxtree* createSyntaxTree();

如果我正在处理typedef,我可以理解有问题,但这是非常直接的,并且双方的类型都是syntaxtree*类型。

如何解决这个令人沮丧的错误?

1 个答案:

答案 0 :(得分:1)

scope::st的类型为struct symboltree*createSyntaxTree()的返回类型为struct syntaxtree*。它们是不同的类型。因此,

newScope->st = createSyntaxTree();

是个问题。

也许您打算使用:

struct syntaxtree*  st;

而不是

struct symboltree*  st;

定义struct scope时。