初始化 C 结构的双花括号的含义是什么?

2024-04-06

我目前正在处理遗产C++代码,用gcc 2.9.X成功编译。
我被要求将此遗留代码移植到 gcc 3.4.X。大多数错误都很容易纠正,但这个特殊的错误让我感到困惑。

上下文 :

 struct TMessage 
   {
    THeader header;
    TData data;
   };

 struct THeader
   {
    TEnum myEnum;
    TBool validity;
   };

做了什么 :

 const TMessage init = {{0}};

 /* Later in the code ... */
 TMessage message = init;

我的问题 :
{{}} 运算符的含义是什么?它是否初始化第一个字段(header) 到二进制 0 ?它是否初始化第一个结构的第一个字段(enum) 到(字面量)0 ?

我得到的 3.4.6 错误是invalid conversion from 'int' to 'TEnum',带有一对或两对大括号。

如何在不使用 memset 的情况下将结构设置为一堆 0?

提前致谢。


它将 POD 结构的所有字段初始化为 0。

理由:

const SomeStruct init = {Value};

将 SomeStruct 的第一个字段初始化为 Value,将结构的其余部分初始化为零(我忘记了标准中的部分,但它在某处)

Thus:

const SomeOtherStruct init = {{Value}};

将结构体第一个字段的第一个字段(其中结构体的第一个字段本身就是 POD 结构体)初始化为 Value,将第一个字段的其余部分初始化为零,将结构体的其余部分初始化为 0。

此外,这只是不起作用,因为 c++ 禁止隐式转换int枚举类型,所以你可以这样做:

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

初始化 C 结构的双花括号的含义是什么? 的相关文章

  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 如何在标准 WPF ListView 中启用 UI 虚拟化

    我正在使用 NET 4 5 VS2012 并且我有一个 ListView 看起来像这样
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • 如何在 Windows 上升级 pgAdmin 4?

    我安装了 pgAdmin 4 作为 Windows 的 postgres 安装程序的一部分 pgAdmin 现在告诉我有一个更新的版本 我有 4 8 gt 4 5 但是 我没有看到内置的升级功能 当我下载并运行 pgAdmin 4 安装程序
  • C++ 重复符号

    Mac 我尝试过命名空间 包括警卫 编译指示一次等 基本上 这是结构 CMakeLists txt add executable Game Game main cpp Game rtexture cpp 游戏 main cpp includ
  • Google 新闻 rss 参数 num 100 仅返回 30 个结果

    我用来从谷歌新闻获取结果的链接 它工作正常 但我得到的结果数量存在问题 当 num 参数超过 30 时 无论数量多少 num 参数最多返回 30 个结果 谷歌是否改变了它给出的结果数量 如果是的话有没有任何文档 提前致谢 根据source
  • 如何使用 pandas 将多行字符串合并为一行?

    我有一个包含多行的 DataFrame 有什么方法可以将它们组合成一个字符串吗 例如 words 0 I will hereby 1 am gonna 2 going far 3 to 4 do 5 this 预期输出 I will her
  • 查找与区域设置相关的一周的第一天

    给定一个NSDate 在给定用户的区域设置的情况下 如何找到该日期一周的第一天 例如 我听说有些国家将星期一视为一周的第一天 而其他国家则将星期日视为一周的第一天 在第一种情况下我需要返回前一个星期一 在后一种情况下我需要返回前一个星期日
  • 具有多个命名空间的 DataContractSerializer

    我正在使用 DataContractSerializer 将对象序列化为 XML 主要对象是SecurityHolding 其命名空间为 http personaltrading test com http personaltrading
  • 如何修改codeigniter中的路由

    帮我解决这个问题 举个例子 我有这个正常的网址 localhost CI index php base storeurl 我怎样才能让 Codeigniter 知道要寻找 本地主机 CI storeurl 我有一个名为index 的函数 它
  • Struts 2/ Foundation 5 - ModelDriven 类和文件上传

    我是 Java 编程新手 我正在尝试创建一个带有表单等的基本网页来下订单 在参加了几次工作会议后 我决定使用 Struts 2 我还使用 zurb Foundation 5 来实现响应式 UI 我能够创建一个 HTML 网页和一个带有文本字
  • 使用媒体播放器的 Android http 直播流媒体 URL

    我正在尝试播放一个网址 但它没有播放 我使用的代码如下 logcat 显示 Mediaplayer 错误 1 1002 开始状态为 0 且错误 38 0 为什么 我哪里出错了 你能帮我看看怎么玩吗 import java io IOExce
  • 运行高优先级 sshd 进程,而不将该优先级继承给子进程

    我使用以下命令给 sshd 进程赋予最高优先级 nice n 20 sbin sshd 但默认情况下它也会给子进程 bin sh 最高优先级 那么 是否可以为子进程赋予普通优先级 0 而不是最高优先级 假设此 sshd 是 OpenSSH
  • Android SQLite CursorWindowAllocationException 崩溃

    当我发出多个cursor moveToNext 请求时 我的程序崩溃了 错误消息如下 android database CursorWindowAllocationException Cursor window allocation of
  • 主管不使用 Gunicorn + Flask

    我正在尝试在 Ubuntu 12 04 系统中从 Supervisor 运行 Gunicorn Gunicorn 运行 Flask 应用程序 使用 Flask 的嵌入式服务器测试的简单 REST Web 服务 我通过克隆 GIT 存储库来安
  • React 项目中 Bootstrap 需要 jQuery

    我正在开发一个 React js 项目 我不使用 React Bootstrap 而是将 Bootstrap 的 CSS 加载到我的项目中 我现在需要导入 jQuery 以便我可以使用下拉菜单等 入口点文件 index js 希望它能起作用
  • Pip“找不到满足 pygame 要求的版本”[重复]

    这个问题在这里已经有答案了 当我尝试使用以下命令安装 PyGame 时 pip install pygame it says 收集pygame 找不到满足要求的版本 要求 pygame 来自版本 未找到匹配的分布 我相信我使用的是最新版本
  • 在 Cygwin 中从源代码构建 Vim

    我正在尝试在 Cygwin 下从源代码包构建 Vim 以启用 Python 支持 我正在按照给出的指示进行操作here http cygwin com ml cygwin 2004 06 msg00540 html 但是当我运行时遇到这个错
  • 在测试台中显示信号名称/文字

    是否可以在 Verilog 中引用 显示信号的名称 文字 对于在 Verilog 测试台中创建通用信号检查功能来说 这将是一个有用的功能 我知道使用 display 时 m 将打印信号的范围 是否有显示信号名称的等效项 在 Verilog
  • C++11 future.wait_for() 始终返回 future_status::timeout

    我有一个 C 11 程序 用于检查数字是否为素数 程序等待有一个 future 对象准备好 准备好后 程序会告诉 future 对象的提供者函数是否认为该数字是素数 future example include
  • 如何在 Cython 的 setup.py 中指定 Python 3 源?

    我正在尝试按照本教程在 Cython 中执行 Hello World 程序http docs cython org src tutorial cython tutorial html cython hello world http docs
  • 如何使用 matplotlib 显示两个图形?

    我在同时绘制两个图形时遇到一些麻烦 未在单个图中显示 但根据文档 我写了代码 只有图一显示 我想也许我失去了一些重要的东西 有人能帮我弄清楚吗 谢谢 代码中使用的 tlist first 是数据列表 plt figure 1 plt his
  • 初始化 C 结构的双花括号的含义是什么?

    我目前正在处理遗产C 代码 用gcc 2 9 X成功编译 我被要求将此遗留代码移植到 gcc 3 4 X 大多数错误都很容易纠正 但这个特殊的错误让我感到困惑 上下文 struct TMessage THeader header TData