C++ 匿名结构

2024-03-02

我使用以下联合来简化字节、半字节和位操作:

union Byte
{
  struct {
    unsigned int bit_0: 1;
    unsigned int bit_1: 1;
    unsigned int bit_2: 1;
    unsigned int bit_3: 1;
    unsigned int bit_4: 1;
    unsigned int bit_5: 1;
    unsigned int bit_6: 1;
    unsigned int bit_7: 1;
  };

  struct {
    unsigned int nibble_0: 4;
    unsigned int nibble_1: 4;
  };

  unsigned char byte;
};

它工作得很好,但它也会生成此警告:

警告:ISO C++ 禁止匿名结构 [-pedantic]

好的,很高兴知道。但是...如何从我的 g++ 输出中获取此警告?是否有可能在没有这个问题的情况下编写类似这个联合的东西?


gcc 编译器选项-fms-extensions http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/C-Dialect-Options.html将允许非标准匿名结构而不发出警告。

(该选项启用了它所认为的“微软扩展”)

你也可以达到同样的效果有效的 C++使用这个约定。

union Byte
{
  struct bits_type {
    unsigned int _0: 1;
    unsigned int _1: 1;
    unsigned int _2: 1;
    unsigned int _3: 1;
    unsigned int _4: 1;
    unsigned int _5: 1;
    unsigned int _6: 1;
    unsigned int _7: 1;
  } bit;
  struct nibbles_type {
    unsigned int _0: 4;
    unsigned int _1: 4;
  } nibble;
  unsigned char byte;
};

有了这个,您的非标准byte.nibble_0成为合法的byte.nibble._0

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

C++ 匿名结构 的相关文章

随机推荐

  • 找到图像上的特定点

    我正在尝试编写一个程序来解决难题 我的尝试与我用来测试的示例谜题效果很好 现在我正在尝试为一个真正的谜题制作一个 这个新拼图的拼图块实际上没有正确的形状 我设法将图像变成黑白 最后变成 1 和 0 的数组 其中 1 表示片段 0 表示背景
  • 解决 svn update 时的合并冲突

    我正在尝试学习 Eric Sink 的版本控制基础知识 http ericsink com vcbe vcbe usletter lo pdf http ericsink com vcbe vcbe usletter lo pdf 我现在在
  • 使用 javascript 获取 DOM 树

    我正在开发一个小脚本分析 DOMHTML 页面和在屏幕上写下节点树 这是一个简单的函数 称为递归地获取所有节点及其子节点 每个节点的信息存储在一个数组中 自定义对象 我已经得到了所有节点在 DOM 中 但不是如何在树上画画通过嵌套列表 JS
  • 如何在Python中创建一个trie树

    我对 trie 和 DAWG 直接非循环字图 感兴趣 并且阅读了很多有关它们的内容 但我不明白输出 trie 或 DAWG 文件应该是什么样子 trie 应该是嵌套字典的对象吗 每个字母在哪里又分为to letter等等 如果有 100k
  • 设置 Combobox 的选定值而不触发 SelectionChanged 事件

    我有一个组合框
  • 添加文档时是否需要重建 MongoDB 索引

    我刚刚发现了 mongodb 索引的非凡力量 仅在几个字段上构建索引就使我能够将某些操作的速度提高 1000 倍甚至更多 我对一个看似愚蠢的问题表示歉意 一旦我在数据库中的特定字段上建立了索引 每次添加和删除文档时索引会自动重建吗 或者我必
  • 为什么在构建 MVC 项目时,我会随机收到“使用注册为allowDefinition='MachineToApplication'的节时出错”的错误消息?

    我在部署网站时看到了一些关于类似错误的问题 但我似乎在部署网站时随机收到此错误buildingVisual Studio 中的 ASP NET MVC 网站 执行清理通常可以解决问题 但是有什么方法可以完全避免这种情况吗 在应用程序级别之外
  • 通过 Javascript 访问 Chrome 和 Safari 中的 SVG DOM

    我试图显示一个缩放到对象大小的 SVG 以便缩放 600x600 的 svg 以适合 500x500 的对象或 300x300 的任何对象 这一切在 FireFox 中都工作得很好 但 Safari 和 Chrome Webkit 只是裁剪
  • clang-tidy 会让 clang-check 变得多余吗?

    这两个工具似乎有一些共同的目标 而clang tidy 的文档 http clang llvm org extra clang tidy 对其功能非常明确 铿锵检查的 https clang llvm org docs ClangCheck
  • 4.4.2 上完全禁用/隐藏状态栏

    我们正在为老年人开发一款启动器应用程序 它有一个非常简单的用户界面 我们不想显示状态栏或通知抽屉 现在我尝试禁用状态栏 但当我从屏幕上侧下拉时 它似乎重新出现 如果我第二次下拉通知抽屉被打开 有没有办法完全禁用状态栏 我检查了以下链接上的文
  • Django:ajax调用时需要login_required

    我正在尝试在 ajax post 上验证用户身份 但不起作用 这是我所做的 设置 py LOGIN URL accounts login LOGIN REDIRECT URL Template
  • PHP 自动“GET”变量

    我正在为我的公司设计一个新网站 我正在尝试实现切换导航 这是我过去在所有网站上使用的 由于某种原因 当我转到index php x products 时没有任何反应 它仍然显示 inc main php 换句话说 它没有从 URL 中检测到
  • 计算 pandas 数据框中并集的交集(杰卡德索引)

    我有一个像这样的数据框 animal ids cat 1 3 4 dog 1 2 4 hamster 5 dolphin 3 5 数据框相当大 有超过 8 万行 并且 ids 列可能轻松包含数千个 甚至 1 万个逗号分隔的 id 给定行中的
  • oddg 类型的 onClick(View) 方法必须重写超类方法吗?

    我遇到这样的错误 oddg 类型的 onClick View 方法必须重写超类 方法 我很困惑到底哪里发生了错误 您能指导一下吗 错误到底是什么 public class oddg extends Activity implements O
  • 使用 jQuery 获取大括号中无效的 HTML 代码

    我有一些 无效的 HTML 代码我无法改变 a href a a href a 使用 jQuery 我选择两个锚点之一 function someFunction id text id 现在 我想获取大括号内的文本 因此对于id 1这意味着
  • 我应该为多客户端应用程序使用单个还是多个数据库设置? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个 PHP 应用程序 旨在简化公司工作流程和项目管理 比如说Basecamp http www basecamphq com and
  • 如何在tinymce中禁用复制/粘贴

    我在我的网站上使用tinymce RTF 编辑器 我想禁用tinymce文本区域中的复制 粘贴选项 我在 stackoverflow 上找到了这个方法 但它对我不起作用 如何防止 禁用 Tinymce 中的复制和粘贴 https stack
  • 为什么不能将字符串文字连接到 __FUNCTION__?

    Isn t FUNCTION 字符串文字 我一直以为是这样的 FILE 但我刚刚发现我无法将字符串文字与其相邻连接 如果它不是字符串文字 那么它的定义是什么 我无法让 cscope 解决它 E g include
  • Keras ImageDataGenerator 中的增强

    我有两个关于 ImageDataGenerator 的问题 1 整批图像是否使用相同的增强 或者每个图像都有自己的随机变换 例如对于旋转 模块是否以相同的角度旋转批次中的所有图像 或者每个图像获得随机旋转角度 2 ImageDataGene
  • C++ 匿名结构

    我使用以下联合来简化字节 半字节和位操作 union Byte struct unsigned int bit 0 1 unsigned int bit 1 1 unsigned int bit 2 1 unsigned int bit 3