栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在ctypes中使用枚举

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在ctypes中使用枚举

至少对于GCC

enum
来说,只是一个简单的数字类型。它可以是8位,16位,32位,64位或其他任何值(我已经用64位值对其进行了测试)以及
signed
unsigned
。我猜它不能超过
longlong int
,但是实际上你应该检查你的范围
enum
并选择类似
c_uint

这是一个例子。C程序:

enum batch_op {    OP1 = 2,    OP2 = 3,    OP3 = -1,};struct attrl {    char *name;    struct attrl *next;    enum batch_op op;};void f(struct attrl *x) {    x->op = OP3;}

和Python之一:

from ctypes import (Structure, c_char_p, c_uint, c_int,    POINTER, CDLL)class AttrList(Structure): passAttrList._fields_ = [    ('name', c_char_p),    ('next', POINTER(AttrList)),    ('op', c_int),](OP1, OP2, OP3) = (2, 3, -1)enum = CDLL('./libenum.so')enum.f.argtypes = [POINTER(AttrList)]enum.f.restype = Nonea = AttrList(name=None, next=None, op=OP2)assert a.op == OP2enum.f(a)assert a.op == OP3


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号