我有一个函数,我在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*
类型。
如何解决这个令人沮丧的错误?
答案 0 :(得分:1)
scope::st
的类型为struct symboltree*
。 createSyntaxTree()
的返回类型为struct syntaxtree*
。它们是不同的类型。因此,
newScope->st = createSyntaxTree();
是个问题。
也许您打算使用:
struct syntaxtree* st;
而不是
struct symboltree* st;
定义struct scope
时。