我尝试使用C++类中C/Python API中定义的结构。具体来说,我正试图为PyMethodDef
和PyMemberDef
定义一个结构数组(文档是here):
对于PyMethodDef
,我可以在类头中定义一个静态数组,并在实现文件中声明它。但是,对PyMemberDef
执行相同的操作会导致以下错误:
error: elements of array 'PyMemberDef members_ []' have incomplete type
error: storage size of 'members_' isn't known.
我想我能理解为什么PyMethodDef
起作用,而{PyMethodDef
的定义如下:
鉴于PyMemberDef
的定义如下:
typedef struct PyMemberDef {
...
...
} PyMemberDef;
我通过定义PyMemberDef
在我的代码中PyMethodDef
的方式来确认这是问题的原因,并确认它编译没有错误。但是,我不知道该怎么纠正。我宁愿不硬编码,自己重新定义它。
希望这足够清楚。我可以根据要求提供更多细节。
谢谢。在
如果您尝试使用clang,它会给您一个更有意义的错误消息,如:
因此,似乎
PyMemberDef
实际上并没有在这里声明。在快速grep显示它是在
structmember.h
中声明的,而该文件不包含在Python.h
中。在然后快速查看Defining new types上的Python文档,您会注意到该示例以以下内容开头:
^{pr2}$相关问题 更多 >
编程相关推荐