当我的编译器不符合标准时如何将数组成员归零

2023-12-06

我的编译器(C++Builder6)在语法上允许数组成员初始化(至少为零),但实际上它并没有真正做到这一点。因此,下面给出的示例中的断言会失败,具体取决于上下文。

#include <assert.h>

struct TT {
    char b[8];
    TT(): b() {}
};

void testIt() {
    TT t;
    assert(t.b[7] == 0);
}

目前无法选择更改编译器。我的问题是:就未来的可移植性和标准一致性而言,“修复”此缺陷的最佳方法是什么?


Edit:事实证明,我的第一个例子 was 过短。它忽略了一点,即数组的填充级别非常重要,以至于它必须存储在离数组非常近的地方,即:在同一个类中。

Even if 原来的问题仍然存在,我的实际问题模式通常是这样的:

struct TT2 {
    int size;
    char data[8];
    // ... some more elements
    TT2(): size(0), data() {}
    // ... some more methods
};

我想你可以用这个:

TT() { std::fill(b, b + 8, char()); }

这样您就可以解决您的问题,同时在可移植性和标准一致性方面没有任何问题!

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

当我的编译器不符合标准时如何将数组成员归零 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 从资产库 URL 获取 NSData

    我正在尝试从设备库的 mp4 文件获取 NSData 这个链接看起来像这样 assets library asset asset mp4 id 32515720 939A 456F 958F 0B2F397416EB ext mp4 我试过
  • JavaScript 按钮停止页面上的所有音频

    我正在使用 mixlr com 的嵌入播放器来播放音频 现在我需要一个按钮来停止整个网站的音频 尽管播放器有自己的播放暂停按钮 但我需要自己的按钮来控制整个网站的音频 如果我单击暂停按钮 它将暂停整个网站的音频 有人可以帮我吗 一键暂停所有
  • R 中多行的一次热编码

    假设我有以下格式的数据 ID VALUE a a a b d b d c 我想做的是对 ID 值进行一次热编码 当我使用model matrix 我得到 model matrix VALUE 1 df ID aVALUE bVALUE cV
  • 使用数据库优先方法时覆盖或替换默认构造函数

    我们使用数据库优先的方法来创建 MVC 模型 这意味着框架会在主模型中自动生成默认构造函数 cs文件 然而 我想设置几个默认值 问题是这个框架每次都会为此模型生成一个基本的 cs 文件 edmx已更新 有什么方法可以在部分类中重写此构造函数
  • 使用 Maven 构建 Groovy 项目时出现源错误

    我正在尝试使用 maven 构建我的第一个 groovy 项目 但我从 maven 收到以下错误 它是某种类型的源错误 但我不明白为什么我会收到它 INFO BUILD FAILURE INFO INFO Total time 3 186s
  • IntelliJ的Scala增量编译什么时候发生?

    IntelliJ的Scala增量编译什么时候发生 我注意到对文件进行更改不会导致相应的 class 文件 在 target 中 被更新 什么时候会发生这种情况 我认为你误解了 Scala 增量编译的工作原理 有两种不同的东西可以称为 Int
  • 访问VBA:查找列中的最大数字并加1

    在我的 Access 数据库中 我有一个名为 Demande 的表 我想读取 Numero de Commande 列中的所有记录并读取该列中最大的数字 以便我可以将该数字用于下一个新记录 这是我的桌子 关键索引是针对 Numero de
  • Windows Azure 与.NET 2.0 框架兼容吗?

    我有一个在 NET 2 0 框架中开发的服务 它安装在多个站点中并与我的应用程序一起使用 我希望该服务能够向我 报告 有关该应用程序的某些信息 我想看看 Windows Azure 是否可以让我将报告存储在云数据库中 并在需要时提取它们 我
  • 重写 WinForm ListView 控件上的 Drawitem 事件

    我希望 ListView 的所选项目在焦点丢失时保持清晰可见 在 Windows 7 上为暗灰色 我确实将 HideSelection 属性设置为 False 我想对列表视图执行某人对 TreeView 控件所做的操作 即重写 Drawno
  • Kubernetes 中具有子域重定向的通配符 SSL 证书

    我已将 Kubernetes 配置为使用 cert manager 和 LetsEncrypt 对我的所有应用程序使用一个通配符 SSL 证书 现在的问题是我无法配置子域重定向 因为 Ingress 有点 僵硬 以下是我试图实现这一目标的方
  • 将 char 存储到 int 变量中

    我正在学习 C 中的隐式转换 我读了下面的例子 char a std cin gt gt a I can enter an integer like 56 here std cout lt
  • 当我尝试使用最新的依赖项构建 Maven 空手道项目时出现编译错误

    I m new to Karate API automation tool and just try to set up the tool I m getting Compilation errors when I try to compi
  • 使用 setRepeating() 方法了解下一个闹钟时间

    我有时会在上午 9 00 下午 1 00 晚上 7 00 等时间设置 3 个待处理意图 这些意图每天使用 setRepeating 方法递归触发 这里我将所有这些待处理的意图唯一请求代码保存在本地 SQLite 数据库中 在这里 每当触发警
  • FFREE ST(i) 修改 x87 标记字中的哪些位?

    这个例子是用 NASM 编写的 section bss var28 resb 28 section text main Initialize finit fldpi Read Tag Word fstenv var28 mov ax var
  • 闭包中引用的生命周期

    我需要一个闭包来引用其封闭环境中的对象的一部分 该对象是在环境中创建的 并且范围仅限于该环境 但一旦创建 它就可以安全地移动到闭包中 用例是一个函数 它执行一些准备工作并返回一个将完成其余工作的闭包 这种设计的原因是执行限制 第一部分工作涉
  • 向量的数值导数

    我遇到一个向量 x Nx1 相对 于另一个与 x 大小相同的向量 t 时间 的数值导数的问题 我执行以下操作 以 x 被选为正弦函数为例 t t0 ts tf x sin t xd diff x ts 但答案 xd 是 N 1 x1 并且我
  • 删除名称以特定字符串开头的所有表

    如何删除名称以给定字符串开头的所有表 我认为这可以通过一些动态 SQL 来完成INFORMATION SCHEMA tables 如果数据库中有多个所有者 您可能需要修改查询以包含所有者 DECLARE cmd varchar 4000 D
  • 为 WebGL 示例嵌入 ChakraHost (c#)

    我研究了涉及嵌入 javascript 框架 paper js 的示例 用于通过 ChakraHost 的 JsBridge 实现将输出绘制到 XAML 的 CanvasControl 要包含 paper js 框架和调用该框架的 java
  • ValueError: check_hostname 需要使用 Fiddler 4 的 server_hostname

    This question最近刚刚发布的有一些有用的答案 但与我的不一样 我正在从 ArcGIS Pro Notebook 运行 urllib3 1 26 4 和 Python 3 7 我还打开了 Fiddler 4 因为我想在对脚本进行故
  • 当我的编译器不符合标准时如何将数组成员归零

    我的编译器 C Builder6 在语法上允许数组成员初始化 至少为零 但实际上它并没有真正做到这一点 因此 下面给出的示例中的断言会失败 具体取决于上下文 include