是否可以在 Cython 中声明和定义位域?

Is it possible to declare and define a bit field in Cython?

在 C/C++ 中,您可以通过指定用于结构中给定字段的位数来将 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 并没有看到任何语法来支持它。

仍然希望得到更好的答案,但在紧要关头,你总是可以cheat

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