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

2024-04-28

在 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(使用前将#替换为@)

是否可以在 Cython 中声明和定义位字段? 的相关文章

随机推荐

  • “Backbone.js 视图”中的单击事件不起作用

    我尝试开始使用backbone js 但我发现当我不使用 body 作为视图的el时 该事件不起作用 这是代码 您可以将其另存为 html 文件并运行
  • 获取 UNIX 时间戳的正确小时

    我认为这是一个愚蠢的问题 但似乎我找不到答案 我有这个时间戳 1295598602 在我的 php 脚本中我有 date date 年月日 1295598602 小时 日期 H 1295598602 00 这将返回 日期 2011 01 2
  • 确保 QTableView 中列的唯一值

    我已经实现了一个自定义QTableView and QAbstractTableModel The QTableView使用Qt 用于操作字符串数据的默认文本行编辑委托 我想确保在提交编辑后 按enter 该字符串对于其列来说是唯一的 如果
  • ngClassOdd/ngClassEven 未按预期工作

    使用 Angular 版本 1 2 15 我发现了一个错误 该错误似乎从版本 1 2 2 开始直到 1 2 15 重现 Plunker 演示 http plnkr co edit 3nExMtZ92AQS7BvLsQ8m p preview
  • 同时验证 C# Windows 窗体上的多个文本框

    我有一个带有几个文本框和其他控件的表单 我正在使用 errorprovider 控件 并将验证事件连接到需要验证的每个文本框上 当一个控件将焦点转移给另一个控件时 将发生 Validating 事件 因此 当您使用 Tab 键离开当前控件或
  • 对象作为参数传递给另一个类,通过值还是引用?

    在C 中 我知道默认情况下 传递给函数的任何参数都是通过复制的 也就是说 在函数内 有一个参数的本地副本 但是 当一个对象作为参数传递给另一个类时该怎么办 像下面这样的场景是通过引用传递还是通过值传递 class MyClass priva
  • 递归 - 与 Java 中不重复的数组相结合

    所以我知道如何获取组合的大小 数组大小 在我的例子中 除以所需数组子集大小的阶乘 我遇到的问题是获取组合 到目前为止 我已经阅读了 stackoverflow 上的大部分问题 但一无所获 我认为我发现的问题是我想将创建的组合子集中的元素添加
  • Azure DevOps REST API - 选项列表如何与字段关联?

    I am trying to use rest to create fields and picklists on the web site I created a field as type picklist String and add
  • MySQL 存储映像 BLOB 不良实践性能

    我知道不建议在 SQL 中将图像存储为 BLOB 然而 在我的本地 PC 和服务器上同时工作使得在两者之间同步图像变得困难 是否还有理由不单独使用 BLOB 作为备份 这会在本地创建缓存文件 以静态方式提供服务 本质上 只有选择 BLOB
  • 当 br 位于允许的内容中时,ckeditor 会删除

    当我将 br 添加到 ckeditor 允许的内容并添加 br 标签正在被更改为 br 但是当我添加 br 它正在被删除 为什么当 br 属于允许的内容时它会被删除 有什么建议么 您的帖子中缺少一些内容 不知道为什么 也不知道您想说什么 如
  • 堆内存和Slab分配

    我很困惑heap and free list 我有几个问题 我对C中malloc的工作原理有自己的理解 如果我错了 请纠正我 堆内存是否被组织为数据的链表 空闲列表 块 堆内存和空闲列表有区别吗 我对存储分配的理解 有待改进 当我们调用ma
  • 如何获取资源文件中所有资源的名称

    在 Visual Basic 项目中 我添加了一个包含一堆图像的资源文件 resx 现在我想查询图像的名称 如果我在 Visual Studio IDE 的设计器视图中打开 resx 文件并选择一个图像 属性网格会显示一个名称属性 默认为
  • 如何使用共享数据库在 Heroku 上进行 GIS 查询?

    我有一张带有纬度和经度的地理编码位置表 我希望我的数据库查询返回它们的过滤列表 按距固定点的距离排序 我探索过以下几个选项 Postgresql 的 Earthdistance 贡献 http www postgresql org docs
  • 无法通过 phantomjs 网络服务器传送图像文件

    我正在尝试让 phantomjs 网络服务器为我工作 我想提供 2 个文件 html 文件和 png 图像文件 html 文件服务良好并在浏览器中正确呈现 但 png 文件不是 这是服务器的代码 var fs require fs func
  • 使用 CORS 进行 React 中的 Fetch 时出现问题

    我对 CORS 完全陌生 并且遇到以下问题 我正在使用 create react app 端口 3000 调用 spring boot 端口 8080 中创建的一些 REST 服务 我将 JWT 身份验证添加到我的 REST API 中 因
  • 如何根据本地目录中的requirements.txt 文件使用pip 安装软件包?

    问题是这样的 我有一个要求 txt文件看起来像 BeautifulSoup 3 2 0 Django 1 3 Fabric 1 2 0 Jinja2 2 5 5 PyYAML 3 09 Pygments 1 4 SQLAlchemy 0 7
  • mongodb 聚合随机化(shuffle)结果

    我正在浏览一堆 mongo 文档 但找不到洗牌或随机化结果内容的可能性 有没有 特别是对于聚合框架本身来说 实际上并没有任何本地方法 因为还没有可用的运算符来执行诸如生成随机数之类的操作 因此 无论您可能投射一个字段进行排序的任何匹配 都不
  • 打开和关闭 RDP 窗口

    我有很多服务器 我想检查是否可以使用 RDP 连接到它们 我有 2000 台服务器 所以我想实现自动化 我对 PowerShell 不太熟悉 以下是我所掌握的 列表 txt ip1 ip2 ip3 ipn 这是我的代码 我在每个 ip 上循
  • 解决 emacs 错误的想法:“应用:生成子进程:exec 格式错误”

    我正在尝试将 rdebug 与 emacs 和 cygwin 一起使用 但遇到了麻烦 每当我执行 M x rdebug 并为其提供适当的脚本来运行时 它都会因错误而停止 apply Spawning child process exec f
  • 是否可以在 Cython 中声明和定义位字段?

    在 C C 中你可以声明一个位域 https en cppreference com w cpp language bit field作为结构体 通过指定用于结构体中给定字段的位数 例如 typedef struct char threeB