【发布时间】:2015-06-18 07:34:29
【问题描述】:
在 GCC 4.8.2 下编译 swig Python wrapper 时出现什么错误?
wfdb_python_wrap.c:3967:11: error: dereferencing pointer to incomplete type
if (arg1->fname) free((char*)arg1->fname);
^
wfdb_python_wrap.c:3967:36: error: dereferencing pointer to incomplete type
if (arg1->fname) free((char*)arg1->fname);
源代码来自wfdb_python_wrap.c:
...
#include <wfdb/wfdb.h>
...
#ifdef __cplusplus
extern "C" {
#endif
SWIGINTERN PyObject *_wrap_WFDB_Siginfo_fname_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
...
struct WFDB_Siginfo *arg1 = (struct WFDB_Siginfo *) 0 ;
...
if (arg1->fname) free((char*)arg1->fname);
...
头文件/usr/local/include/wfdb/wfdb.h:
...
struct WFDB_siginfo { /* signal information structure */
char *fname; /* filename of signal file */
...
};
...
【问题讨论】:
-
非常奇怪的代码,但我猜那是 SWIG 与古代编译器兼容,或者其他什么。我的建议是阅读
wfdb_python_wrap.c的预处理版本。也许struct声明被预处理器魔法或其他东西隐藏了。
标签: python c gcc compiler-errors swig