我正在编写一个解析器,在进行转换时,我无法区分普通类类型和数组类类型。
拥有类似于以下内容的内容会对我有很大帮助:
if (expression causes segmentation fault)
do sth
else
do sth else
如果不是这样,那么区分两个类的好方法是什么?
if (base->type->GetType() != "") {
char *key = strcpy(key, base->type->GetType().c_str());
Node *node = (stack->front).Lookup(key);
if (node != NULL) {
theclass = dynamic_cast<ClassDeclaration *>(node);
}
if (!base->GetType()->IsEquivalentTo(GetType()))
errReport.FieldNotFoundInBase(field, type);*/
if (theclass->id->name){ // segfault happens here.
- 变量 theclass 有时被初始化为一个实际的类,有时被初始化为一个数组。当存在数组类而不是实际类时,seg 错误发生在行
if (theclass->id->name) {
中,因为数组类实际上没有名称字段。我真的没有办法告诉类变量被初始化的类型。