如何在Cython中使用#define as char array的大小

2024-04-20 09:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

c++头(some.h)包含:

#define NAME_SIZE 42

struct s_X{
 char name[NAME_SIZE + 1]
} X;

我想在Python中使用X结构。我怎么能做到呢?在

我写道:

^{pr2}$

得到一个错误:在常量表达式中不允许


Tags: namesize表达式错误some结构struct常量
2条回答

在声明类型时告诉Cython什么通常并不重要-它使用这些信息来检查你在类型转换上没有做任何明显的错误,仅此而已。cdef extern "some.h"语句确保一些.h包含在Cython创建的c文件中,并最终确定要编译的内容。在

因此,在这个特殊的例子中,你只需插入一个任意的数字就可以了

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代码中的数字时。例如:

^{pr2}$

(对于这种情况下该怎么办,我目前没有建议)

NAME_SIZE实际上并不存在于您的程序中,因此您可能需要在Python中对其进行硬编码。在

不管它在C源代码中的外观如何,您也在C数组声明中硬编码了它。在

相关问题 更多 >