联合初始化

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

联合初始化 的相关文章

  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • 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