2024-04-20 09:22:50 发布
网友
c++头(some.h)包含:
#define NAME_SIZE 42 struct s_X{ char name[NAME_SIZE + 1] } X;
我想在Python中使用X结构。我怎么能做到呢?在
我写道:
得到一个错误:在常量表达式中不允许
在声明类型时告诉Cython什么通常并不重要-它使用这些信息来检查你在类型转换上没有做任何明显的错误,仅此而已。cdef extern "some.h"语句确保一些.h包含在Cython创建的c文件中,并最终确定要编译的内容。在
cdef extern "some.h"
因此,在这个特殊的例子中,你只需插入一个任意的数字就可以了
cdef extern "some.h": cdef int NAME_SIZE # 42 ctypedef struct X: char name[2] # you can pick a number at random here
但在某些情况下,它是不起作用的,特别是在Cython必须实际使用它生成的C代码中的数字时。例如:
(对于这种情况下该怎么办,我目前没有建议)
NAME_SIZE实际上并不存在于您的程序中,因此您可能需要在Python中对其进行硬编码。在
NAME_SIZE
不管它在C源代码中的外观如何,您也在C数组声明中硬编码了它。在
在声明类型时告诉Cython什么通常并不重要-它使用这些信息来检查你在类型转换上没有做任何明显的错误,仅此而已。
cdef extern "some.h"
语句确保一些.h包含在Cython创建的c文件中,并最终确定要编译的内容。在因此,在这个特殊的例子中,你只需插入一个任意的数字就可以了
但在某些情况下,它是不起作用的,特别是在Cython必须实际使用它生成的C代码中的数字时。例如:
^{pr2}$(对于这种情况下该怎么办,我目前没有建议)
NAME_SIZE
实际上并不存在于您的程序中,因此您可能需要在Python中对其进行硬编码。在不管它在C源代码中的外观如何,您也在C数组声明中硬编码了它。在
相关问题 更多 >
编程相关推荐