在 C/C++ 中你可以声明一个位域 https://en.cppreference.com/w/cpp/language/bit_field作为结构体,通过指定用于结构体中给定字段的位数。例如。:
typedef struct {
char threeBits : 3;
char fiveBits : 5;
} MyBitField;
如果我们询问它的大小,我们会得到 1:
printf("sizeof(MyBitField): %d\n", sizeof(MyBitField)); // prints: "sizeof(MyBitField): 1"
是否可以在 Cython 中定义这些特殊类型的结构?
我看了看docs https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#styles-of-struct-union-and-enum-declaration并且没有看到任何语法来支持这一点。
仍然希望得到更好的答案,但在紧要关头,你总是可以cheat https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#including-verbatim-c-code
cdef extern from *:
"""
struct MyBitField {
char threeBits : 3;
char fiveBits : 5;
};
"""
cdef struct MyBitField:
char threeBits
char fiveBits
cdef MyBitField mbf = MyBitField(2,3)
print(mbf)
print(sizeof(mbf))
打印:
{'threeBits': 2, 'fiveBits': 3}
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)