联合初始化

2024-04-12

我正在尝试全局初始化一个联合,如下例所示:

#include <cstdio>

typedef union {
    char t[4];
    int i;
} a;

enum {
    w = 5000,
    x,
    y,
    z
};

a temp = {w};
int main() {
    printf("%d %d %d %d %d\n", temp.t[0],temp.t[1],temp.t[2],temp.t[3],temp.i);
    return 0;
}

但是,如果您运行代码,您会注意到 temp.i 或 temp.t[...] 实际上都没有给出我初始化联合所用的正确项目。我想如果我可以手动初始化整数成员,就可以避免这种情况,但不幸的是我不能。我也无法更改结构中元素的顺序(交换 int 和 char 顺序可以正确初始化所有内容) - 它们实际上是由外部库提供的。 我的问题是:如何设置结构体的整数成员globally,而不是 char[4] 成员(或者,在本例中,只是 char[] 的第一个元素)?

编辑:另外,这个问题有严格的C++解决方案吗?即命名结构初始化不起作用(因为它在语言中不存在)?


在 C99 中你可以这样做:

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

联合初始化 的相关文章

随机推荐

  • JQuery 和 PHP - 我可以从服务器推送吗?

    我刚刚开始研究 JQuery 到目前为止 一切都是 PHP 只是好奇 如果服务器检测到事件并想要更新用户的浏览器 我可以进行服务器推送 还是客户端必须轮询 客户端必须进行轮询 但你可以这样做长轮询 http en wikipedia org
  • 如何使用 .htaccess 文件阻止 IP 地址范围

    我检测到一系列 IP 地址可能被恶意使用 但我不知道如何阻止它 我想使用 htaccess 文件阻止 66 249 74 范围访问我的网站 你可以使用 Order Allow Deny Deny from 66 249 74 0 24 Al
  • iOS 9 中 UITextView 根据内容的高度是错误的

    我通过编程方式动态地将视图添加到带有布局约束的滚动视图中 对于文本视图组件 我想根据文本视图中设置的文本设置高度约束 所以我创建了扩展 UITextView 的类 在文本视图类中 我编写了以下代码来添加高度约束 import CETextV
  • Matplotlib:更改各个网格线的颜色

    我现在只使用 Python 大约一个月 所以如果有一些我忽略的简单解决方案 我很抱歉 基本上我有一个包含 4 个子图的图 左边的 2 个显示纵向图 右边的显示纵向图某些点的散点图 您可以使用按钮单击纵向图不同点的散点图 当前所在纵向图的刻度
  • 无法在 Windows 10 中完全删除 Cygwin

    我无法删除 Windows 10 设置中的 Cygwin 我缩小了范围 导致问题的文件是C cygwin usr share avogadro crystals zeolites CON cif 就我而言 为什么无法删除cywin目录 文件
  • NextJS Zustand 持久状态

    我有这个 github 仓库 https github com salmanfazal01 next firebase starter https github com salmanfazal01 next firebase starter
  • 如何将我当前位置的地图绘制到特定的纬度经度值

    我使用 android 创建 Google 地图 我获取当前位置的纬度经度值并使用其他一些纬度经度值 现在如何在 2 个位置绘制最短路径线 我的主要 Activity java public class MainActivity exten
  • 如何防止此查询两次打印相同的结果?

    我设法创建了一个适合我需要的查询 但现在我遇到了问题 鉴于当前显示结果的方式 查询将每个结果重复两次 我怎样才能让它在显示一次的地方正常工作 Code sql SELECT DISTINCT contacts contact id user
  • 检查定期 ScheduledFuture 是否正在运行

    我有一个通过 Spring 安排的定期任务TaskScheduler schedule Runnable Trigger 鉴于返回的ScheduledFuture 有什么方法可以检查任务当前是否正在运行 经过一番测试后 public sta
  • 在 ARM 处理器上执行存储在外部 SPI 闪存中的程序

    我有一个 ARM 处理器 能够与外部闪存芯片连接 写入芯片的是为 ARM 架构编译的程序 可供执行 我需要知道如何将这些数据从外部闪存获取到 ARM 处理器上以供执行 我可以提前运行某种复制例程 将数据复制到可执行内存空间吗 我想我可以 但
  • 即使在开始时已经输入,Ansible 同步也会提示密码

    Ansible v1 6 5 的同步模块提示输入密码 Enter passphrase for key 尽管我一开始就已经输入了运行剧本 知道为什么吗 我使用以下选项运行我的剧本 u myuser ask sudo pass private
  • 为什么资源文件生成的类位于具有不同名称的文件中?

    我有一个资源文件strings resx 生成的资源类在strings1 designer cs中 为什么会这样呢 问题具体在于 1 该文件内的类名是 strings 正如它应该的那样 请注意 我确实尝试删除 Designer cs 并通过
  • 数组按第一个值排序

    这是我当前的数组 Array 0 gt 10 13 1 gt 11 15 2 gt 12 7 3 gt 1 0 4 gt 2 0 5 gt 3 0 6 gt 4 0 7 gt 5 0 8 gt 6 0 9 gt 7 0 10 gt 8 0
  • 将回车符 (\r) 转换为实际覆盖

    问题 有没有办法将回车符转换为字符串中的实际覆盖 以便000000000000 r1010变换为101000000000 Context 1 初步目标 有号码x 0到255之间 在基数10中 我想将这个数字转换为基数2 添加尾随零以获得12
  • 如何选择在我的 Cocoa 应用程序中使用的网络接口

    我正在尝试在不同的网络上运行测试 我可以在两个 WiFi 连接之间切换 但我需要知道如何在连接了以太网电缆的 WiFi 上运行测试 所以基本上 我需要运行 ping 测试来检查机器上的所有网络是否正常工作 连接以太网端口后 它始终在以太网上
  • Maven:java.lang.NoClassDefFoundError:com/google/inject/internal/cglib/core/$CodeGenerationException

    每当我尝试构建任何 Maven 项目或生成一些原型时 我都会收到此错误 ERROR Error executing Maven ERROR java lang NoClassDefFoundError com google inject i
  • 动态注册本地Vue.js组件

    我们知道possible http v1 vuejs org guide components html Registration动态注册全局 Vue js 版本 1 组件 如下所示 Vue component my component M
  • SAS 宏日期问题

    我对 SAS 完全陌生 我的数据库包含 2000 2011 年的数据 我的数据集列表对于每个数据集都是这样的date TP 2004012 for 26JAN2004 TP 20040127 for 27JAN2004 TP 2004012
  • 在 PowerShell 中调用通用静态方法

    如何在 Powershell 中调用自定义类的通用静态方法 给定以下课程 public class Sample public static string MyMethod
  • 联合初始化

    我正在尝试全局初始化一个联合 如下例所示 include