工会内的无名工会

2024-01-09

我正在阅读一些代码并发现类似以下内容:

typedef union {
    int int32;
    int boolean;
    time_t date;
    char *string;
    union {
        struct foo *a;
        struct foo *b;
        struct foo *c;
    };
} type_t;

从语法的角度来看,内部 union {} 可以被删除,*a、*b 和 *c 直接位于外部 union {} 内部。那么无名嵌入联盟的目的是什么?


另一个联合/结构内的未命名联合/结构是 C11 的一个功能,以及一些编译器扩展(例如,GCC http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html).

C11 §6.7.2.1 结构和联合说明符

13 类型说明符是不带标记的结构说明符的未命名成员称为匿名结构;类型说明符是不带标记的联合说明符的未命名成员称为匿名联合。匿名结构或联合的成员被视为包含结构或联合的成员。如果包含的结构或联合也是匿名的,则这会递归地应用。

此功能的优点是可以更轻松地访问其未命名联合字段:

type_t x;

访问该字段a,你可以简单地使用x.a。与不使用此功能的代码进行比较:

typedef union {
    int int32;
    int boolean;
    time_t date;
    char *string;
    union u{      //difference in here
    struct foo *a;
    struct foo *b;
    struct foo *c;
    };
} type_t;

type_t x;

你需要使用x.u.a.

有关的:C 中的未命名结构/联合 https://stackoverflow.com/q/13376494/1009479

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

工会内的无名工会 的相关文章

随机推荐

  • base64编码总是一对一的吗

    Base64编码算法的两个不同输入是否有可能获得两个相同的编码值 让我们使用另一种算法 例如用字母 X 替换下划线的函数 Foo Bar FooXBar FooXBar FooXBar Base64 编码会发生这种事情吗 不 这不可能发生
  • 游戏框架中的多个数据库

    我正在尝试与另一台服务器上的另一个数据库建立第二个数据库连接 我们使用的是 play 框架 1 2 4 我找到了以下 1 2 3 的文档 http www playframework org documentation 1 2 3 mode
  • WinRT 中的 HttpUtility.ParseQueryString 方法在哪里?

    Since Http实用程序 http msdn microsoft com en us library system web httputility aspx在 WinRT 中不可用 我想知道是否有一种简单的方法来解析 HTTP 查询字符
  • Metro 风格应用中的 RSA 加密

    我有公钥模数和公钥指数 我需要生成公钥并在 Metro 风格应用程序中加密数据 在 C 中 我们有 RSAParameters 类 但我找不到任何适用于 Metro 风格应用程序的此类内容 当我使用直接从证书接收的 base64 编码的公钥
  • 使用 Spring Data ArangoDB 为每个客户提供单独的数据库的多租户

    到目前为止 我知道设置数据库名称以与 Spring Data ArangoDB 一起使用的唯一方法是将其硬编码在database 扩展时的方法AbstractArangoConfiguration 像这样 Configuration Ena
  • 如何让 GWT 在链接文件夹中查找源代码?

    我想创建一个 GWT 2 0 4 项目 但我的源代码位于公共 java 目录中 该目录不保存在 GWT 项目目录下 我做了以下事情 1 在包中创建新项目 游戏 com mycomp project game 这工作正常 其源位于 C jav
  • 安装 Cairo 和 PyCairo Mac OsX

    我正在尝试使用 python iGraph 进行网络可视化 当我尝试绘制图表时 我收到了他的错误消息 gt gt gt layout g layout kk gt gt gt plot g layout layout Traceback m
  • 我可以强制 Entity Framework Core 7 不将 ICollections 设置为只读吗? [复制]

    这个问题在这里已经有答案了 Entity Framework Core 7 引入了一项重大更改 尽管它是notEF Core 7 的重大更改中列出 使用脚手架定义模型类时 Scaffold DbContext EF Core 7 现在使IC
  • 有没有地方可以测试代码是否符合 ES5/安全?

    有时我想知道我正在编写的代码是否符合 ES5 安全 Example 由于箭头功能 这会失败 gt something I know Babel可以解决这个问题 但有时我想测试一些案例 有没有地方可以让我这样做 尝试ESlint https
  • 为什么 OnChange 在 Formik 中使用时不起作用?

    我正在尝试在 React 中使用 Formik 作为一个虚拟应用程序 如果我给出值作为道具 我将无法在任何一个输入框中输入任何内容 另一方面 如果我跳过 value 属性 那么我可以在框中键入内容 但提交时不会反映为值 这是代码 expor
  • Qt Mac 部署

    将 QT Framework 添加到我的 app 包中 我正在关注 Qt 站点上有关部署的文档 我创建了一个名为 HTTPClient app 的应用程序 我在 Contents 下创建了 Framework 文件夹 并复制了 crypto
  • 如何从 R 中的 posixct 格式日期时间中选择小时、分钟和秒

    我有一个像这样的数据框 dput tail x 10 structure list DATE structure c 1375725600 1375729200 1375732800 1375736400 1375740000 137574
  • OpenCV 匹配图像

    我正在尝试使用 OpenCV 来匹配如下图像 img2 http img849 imageshack us img849 8177 clearz jpg http img849 imageshack us img849 8177 clear
  • Umbraco 7 使用语言/字典

    我们的项目终于可以添加翻译了 我似乎无法弄清楚如何在 Umbraco 7 中实际使用语言 我在后端添加了一种语言和一些字典项目 但如何在代码中选择给定的语言 是否有任何帮助程序可以在 API 中获取翻译 就像 DictionaryHelpe
  • 使用WebView进行多页面登录网站并获取数据

    我正在为一个网站构建一个 Android 应用程序作为移动客户端 该网站没有 也不会 拥有自己的移动浏览器 UI 我选择的架构使用一个隐藏的 WebView 我使用登录页面对其进行初始化 loadURL 然后加载 JavaScript 以使
  • 如何使用 FCM 发送设备到设备通知,而不使用 XMPP 或任何其他脚本。

    有没有办法通过 FCM 将上游通知消息从一台 Android 设备发送到与 Firebase 数据库连接的另一台设备 我知道 XMPP 服务器可以接收上游消息并将通知发送到其他设备 要接收使用上游 API 发送的消息 我需要实现 XMPP
  • ajax 请求完成后浏览器继续“加载”

    您已经看到过这一点 在 ajax 密集的页面上 例如 meebo com 浏览器永远不会停止 旋转 它永远不会表明它已完成加载 造成这种情况的原因是什么 是否有任何方法可以一致地告诉浏览器 无论它是什么浏览器 加载已完成 编辑 抱歉 我应该
  • 标签移动到注册和子是什么意思?

    given a a label L1 db beat it 10 0 L2 what is the meaning of mov eax L2 sub eax L1 L2 寄存器 以及来自标签的子寄存器包含字符串 MOV EAX L2将标签
  • 有没有一个工具可以生成Spring应用程序上下文依赖关系图/图?

    有没有一个工具可以生成 Spring 应用程序上下文的图表 该工具还应该考虑注释驱动的配置 如 Autowired 该工具可以通过在运行时 转储 BeanDefinitions 来生成依赖关系图 IE 我不需要该工具来进行静态代码分析 Sp
  • 工会内的无名工会

    我正在阅读一些代码并发现类似以下内容 typedef union int int32 int boolean time t date char string union struct foo a struct foo b struct fo