C++ 中位字段的特征

2024-01-22

Reading https://en.cppreference.com/w/cpp/language/bit_field https://en.cppreference.com/w/cpp/language/bit_field,下列结论正确吗?

  • 相邻位域之间是否没有填充是实现定义的(这在以下情况下读起来不同)https://eel.is/c++draft/class.bit#:位域 https://eel.is/c++draft/class.bit#:bit-field)
  • 类对象中位字段的放置是实现定义的
  • 位字段内位的位置是实现定义的(尽管 C++20 将有符号整数定义为 2 次补码)。

(对于 C 参见:C 中位域的特征 https://stackoverflow.com/questions/75284185/characteristics-of-bit-fields-in-c)


“这个问题对一种语言的一项特定功能有三个非常明确的要点。因此,获得一个答案会很有帮助 包含问题的所有三点”

逐一解决要点

  • 相邻位字段之间没有填充的想法,不能保证 https://stackoverflow.com/q/71202989/645128在当前的 C++ 实现中。
  • Yes, C++ 类对象中位字段的放置是实现定义的 https://stackoverflow.com/a/17723903/645128
  • "...there is no guarantee in the standard that bitfields are mapped to adjacent memory regions, although most sensible implementations would do that..."
    referenced from... https://stackoverflow.com/a/63176597/645128

简而言之,结论是不能保证 C++ 的各种新规范之间的位域实现是一致的。因此,从一种 C++ 实现到另一种 C++ 实现的可移植性即使不是不可能,也是很困难的,这迫使任何使用它的应用程序都必须查阅支持所使用的 C++ 编译器的规范和其他文档,以确保其关于如何填充的实现(规则),或位域的其他属性被实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中位字段的特征 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • silverlight 内存分析器

    您对 Silverlight 内存分析器有什么建议 想法吗 ANTS Memory Profiler 6 现在包含 Silverlight 4 分析支持 http www red gate com products ants memory
  • 用于构建 TCP 服务器的优秀 Python 网络库?

    我只是想知道 Python 有哪些网络库可以用来构建 TCP IP 服务器 我知道 Twisted 可能会跳到我的脑海中 但对我来说 文档似乎稀缺 草率且分散 另外 使用 Twisted 是否比使用 select select 滚动我自己的
  • 如何在 Eclipse 的 Java EE 透视图中隐藏引用的库?

    Eclipse 的普通 Java 透视图似乎很好地隐藏了引用库 在项目中的 引用库 文件夹中 不幸的是 Java EE 视角似乎没有同样的功能 并且启用它并不直观 谁能解释一下这个问题 引用的库 视图在 Java 透视图中的 Package
  • 自动隐藏

    这部分链中的最后一个环节 存储和转发日志 in http ftp newartisans com pub git from bottom up pdf http ftp newartisans com pub git from bottom
  • 无需排序即可找到数组中第 n 个最小的元素?

    我想编写一个程序来查找第 n 个最小元素 而不使用任何排序技术 我们可以像快速排序那样递归地进行分而治之的方式吗 如果没有 怎么办 您可以在此处找到有关该问题的信息 选择算法 http en wikipedia org wiki Selec
  • 使用 git 时有没有办法锁定 fork 上的单个文件或目录?

    我们是一个由 60 多名开发人员组成的团队 致力于同一产品 并且正在从 SVN 迁移到 Git 和 GitHub 我们在 SVN 中有一个流程 其中单个文件被锁定 每当开发人员想要提交代码时 他都需要由文件所有者将其解锁 我们三个人是总共
  • 如何从整数列表中生成整数?

    如何从整数列表中生成整数 例如 从 lst 1 2 3 使 a 123 我尝试过 for i in lst print i end 但如果我需要不打印 而只是得到这个号码 Use map将列表中的元素转换为字符串 use str join连
  • 如何从头开始在delphi 7中进行DLL的远程调试

    谁能帮我解决一下如何远程调试独立于 exe 的 DLL 只是一个 dll DLL 是一个将在服务器计算机上运行的服务 DLL 源代码位于客户端计算机上 现在 当该服务在服务器计算机上运行时 我想使用 delphi 7 调试位于客户端计算机上
  • codeigniter 表单 POST 从视图到控制器中为空

    我正在使用 Codeigniter 我创建了一个 HTML 表单 将数据发布到控制器 该表单运行良好 但突然停止发布数据 HTML
  • 解释 Struts 2、Spring 和 Hibernate 集成的教程 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在工作中 我被要求创建一个相当基本的 Web 应用程序 数据库顶部的前端 GUI 用于存储通过表单输入的
  • Silverlight 3 中合并资源字典的正确使用

    正如我读到的 http msdn microsoft com en us library cc903952 VS 95 aspx http msdn microsoft com en us library cc903952 VS 95 as
  • 如何使用 BEM 方法构建自适应网页的 css?

    对于固定布局使用 BEM 很容易 带有媒体查询的自适应网页的 CSS 样式结构是怎样的 html 示例 div class t news div class t news post b post div class b post title
  • 按钮setBackgroundColor无高亮效果

    当我创建一个按钮时 Button myButton new Button this myButton setText Click Me 它创建一个按钮 单击该按钮时 该按钮会变成 橙色 以指示单击 添加到按钮时 button setBack
  • 使用 Qt 进行 C++0x 编程

    有人使用 C 0x 使用 Qt 进行过编程吗 效果如何 是否可以使用 C 0x 的所有优秀功能 您使用什么编译器和版本 我目前使用 gcc 4 6 并尝试所有 c 0x 功能 但我还没有对 Qt 做任何事情 Qt 几乎取代了所有标准库功能
  • 将语言字符转换为拉丁字母

    我尝试编写一个应用程序来学习外文字符 例如 如果您想学习日语 那么您必须记住所有平假名 片假名和汉字字母 例如 平假名 片假名本 学 汉字 例子 一些用户正在尝试学习日语 所以他必须学习 卡本 hon 含义 基础 书 这个 而且他还必须学习
  • SQL查询获取多次出现的值

    我需要查询数据库以显示表中姓氏出现超过 3 次的记录 示例 在我的学生表中 有 3 个姓氏为 Smith 的人 4 个姓氏为 Johnson 1 个姓氏为 Potter 我的查询应该显示姓氏为 Smith 和 Johnson 的记录 因为这
  • 在 matlab 中直观地将数据分为两类

    我有两个数据簇 每个簇都有 x y 坐标 和一个知道其类型的值 1 class1 2 class 2 我已经绘制了这些数据 但我想用边界 视觉上 分割这些类 做这样的事情的功能是什么 我尝试了轮廓 但没有帮助 考虑一下这个分类 http e
  • 不要在 Apache access.log 中记录某些请求

    我最近用自托管分析工具 Piwik 取代了 Google Analytics 这意味着每次有人连接我的网站http www mywebsite com http www mywebsite com 在客户端上执行 Javascript 跟踪
  • Python:获取可调用函数参数的名称

    如何获取作为参数传递给另一个函数的可调用函数的字符串表示形式 def foo print This is my callback function def bar callback None print something bar foo
  • C++ 中位字段的特征

    Reading https en cppreference com w cpp language bit field https en cppreference com w cpp language bit field 下列结论正确吗 相邻