我想有人在Eclipse / Linux上使用Python的源代码吗?我已将其作为makefile项目导入,它构建正常,但错误解析器无法正确解析某些定义并产生大量语义错误,如下所示:
Field 'Py_DECREF(argtuple)' could not be resolved
我检查了那个字段(它是Include/object.h
中的一个宏),似乎错误是因为宏使用了尚未定义的结构(它在pyport.h
中定义,不包括在内在object.h
)。我创建了以下项目:
#include <stdio.h>
#include <stdlib.h>
#include "/mnt/proj/c/Python-3.4.3/Include/pyport.h"
#include "/mnt/proj/c/Python-3.4.3/Include/object.h"
int main(void) {
PyObject po;
Py_DECREF(&po);
return 0;
}
它编译好,错误解析器解析它没问题。我删除了最后两个包含,并将这两个文件添加到Project/Properties/Preprocessor Include Paths/CDT User Setting Entries
。错误解析器解析它没有(没有添加这两个标头,Py_DECREF产生“未解决”错误)。我试图在Python项目中做同样的事情(我已添加到CDT用户设置条目pyport.h
和object.h
标题),但这不是纠正错误。
必须创建哪些配置设置才能摆脱这些语义错误?
编辑1:
解析器日志中填充了以下条目:
Attempt to use symbol failed: tp_dealloc in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:416
Attempt to use symbol failed: ob_type in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:417
Attempt to use symbol failed: tp_free in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:417
Attempt to use symbol failed: ob_type in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:436
Attempt to use symbol failed: tp_iternext in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:436
Attempt to use symbol failed: ob_refcnt in file /mnt/proj/c/Python-3.4.3/Python/bltinmodule.c:449
这些符号与_typeobject
中定义的object.h
结构相关。该结构的定义使用PyObject_VAR_HEAD
宏,在同一文件中定义如下:
#define PyObject_VAR_HEAD PyVarObject ob_base;
但是PyVarObject
结构在PyObject_VAR_HEAD
之后定义了几行。它不能导致这些错误吗?