使结构体变得易失性是否会使其所有成员都易失性?

2023-12-26

如果我有:

struct whatever {
int data;
};
volatile whatever test;
will test.data也会波动吗?

可以提出另一个问题(或者只是用另一种方式来看待原始问题):

是否制作一个结构体const使其所有成员const?

如果我有:

struct whatever { int data; };

const whatever test;

test.data 会是const too?

我的回答是:是的。如果你声明一个类型的对象whatever with const那么它的所有成员都会const too

类似地,如果你声明一个类型的对象whatever with volatile那么它的所有成员都会volatile太,就像你声明对象一样const,它的所有成员都将是const too.

const and volatile是同一枚硬币的两个面;因此标准经常将它们称为cv-qualifiers.


引自标准 ($7.1.5.1/8)

[注:挥发性是一个提示 执行以避免攻击性 优化涉及对象因为对象的价值可能 通过无法检测到的方式进行更改 执行。详细见1.9 语义。一般来说,语义 挥发性的目的是 C++ 中与 C 中相同。]

这意味着,如果您的对象是结构体的实例,那么编译器不能避免涉及对象的激进优化, unless它避免了对其每个成员的积极优化。 (否则,它如何避免涉及对象的优化?)


相关主题:

为什么我们在 C++ 中使用 volatile 关键字? https://stackoverflow.com/questions/4437527/why-do-we-use-volatile-keyword-in-c/4437555#4437555

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

使结构体变得易失性是否会使其所有成员都易失性? 的相关文章

  • 以相反的顺序迭代可变参数模板参数

    如果我手动反转传递给它的模板参数的顺序 以下代码将起作用 template
  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • 为什么派生类不使用基类的operator=(赋值运算符)?

    以下是实际问题的简化版本 而不是打电话Base operator int 代码似乎生成了一个临时的Derived对象并复制它 既然函数签名似乎完美匹配 为什么不使用基本赋值运算符 这个简化的示例没有显示任何不良影响 但原始代码在析构函数中有
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 在何处将 CFLAG(例如 -std=gnu99)添加到 (Eclipse CDT) 自动工具项目中

    我有一个简单的 Autotools C 项目 不是 C 其框架是由 Eclipse CDT Juno 为我创建的 CFLAG 通过检查 似乎是 g O2 我希望所有生成的 make 文件也具有 std gnu99附加到 CFLAG 因为我使

随机推荐

  • 旅游网站如何锁房? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个酒店预订系统 PHP
  • 在 codeigniter 中设置基本 url

    我在 codeigniter 中有这样的目录结构 Appsite website application images 当我访问 index php 中的图像时 我使用了 img src http localhost Appsite web
  • 在 Jetty 中嵌入 Apache ZooKeeper 生成调试日志消息

    我正在使用 Jetty 8 和 ZooKeeper 3 4 5 当我连接到 ZooKeeper 时 jetty 不断生成 DEBUG 级别消息 怎么抑制呢 16 54 56 757 main SendThread 127 0 0 1 218
  • Excel 2010选择一行中的每个单元格,逐个激活它们

    我有一个 XML 文件 将其放入 Excel 中以使其自动生成表格 第一列 A 有名称 第二列 B 有日期 还有一些专栏 但这些与这个问题无关 所以它看起来像这个截图 现在 Excel 2010 中有一个非常愚蠢的错误 当我有数据列时 我将
  • 如何在 JavaScript 中检查元音?

    我应该编写一个函数 它接受一个字符 即长度为 1 的字符串 如果它是元音则返回 true 否则返回 false 我想出了两个函数 但不知道哪一个性能更好以及我应该更喜欢哪种方式 使用 RegEx 的方法要简单得多 但我不确定是否应该尝试避免
  • 在 Eclipse for Java 中将链式方法调用包装在单独的行上

    我还没有成功地弄清楚如何将每个方法调用包装起来Eclipse 例如 我有这个 someObject A B C 但我真的想要这个 someObject A B C 中的 换行 部分下没有任何内容Eclipse似乎给了我这个结果 补充 Dee
  • Windows Server 2003 x64 上的 CruiseControl.Net

    我在使用 CruiseControl net 时遇到问题 其中 Web 仪表板无法在 IIS 中工作 我尝试过在 64 位和 32 位模式之间切换 ASP Net 并重新安装巡航控制系统 但似乎没有任何效果 还有其他人在 64 位平台上遇到
  • 有什么方法可以将文档与 Mercurial 合并但从不尝试解决冲突吗?

    这是一个以下问题 word文档的svn或mercurial版本控制 https stackoverflow com questions 6374469 svn or mercurial version control of word doc
  • 函数内部指针赋值

    我实际上无法弄清楚我在这里做错了什么 所以基本上我有一个对象指针 我将其传递给函数以将其值设置为指向新的对象实例 但它似乎不起作用 我无法解决原因 下面是我正在尝试做的事情的代码示例 GetPointer Object pointer po
  • C# 中变量之间的歧义

    首先我想说我首先进行了搜索 并在其他各种事情上发现了很多类似的问题 但不完全是这个问题 我有这个代码 namespace New Game GameClasses
  • 熊猫发现缺失的 15 分钟间隔

    我有一个数据框 df pd DataFrame customerId A A A A A A A B B B B B B B B B startOf15Min 2019 07 30T00 00 00 2019 07 30T00 15 00
  • BlackBerry OTA 安装的内容类型

    对于 BlackBerry OTA 安装 jad 和 cod 文件应使用什么内容类型 From http www oracle com technetwork systems index 139239 html http www oracl
  • 使用 json_annotation 包可序列化 Flutter JSON 如何将 JsonConverter 与 Firebase Firestore DocumentReference 结合使用

    我正在尝试使用 JSON 可序列化和自定义 JsonConverter 在模型中保存 DocumentReference 但没有正确执行 这是我的模型 DocumentSerializer DocumentReference recentT
  • 通过调用带参数的URL获取json对象

    这看起来是一个简单的问题 但我有一个编码员的心理障碍 这个概念 我输入一个 URL 即 www mysite com getStuff name Jerry ocupation Engineer Id 12345 我不想返回网页或其他内容
  • 在 C++ 代码中初始化 C 结构

    有没有更好的方法在 C 代码中初始化 C 结构 我可以在变量声明点使用初始化列表 但是 如果所有参数在编译时未知 或者如果我没有声明本地 全局实例 则这没有那么有用 例如 声明该结构的遗留 C 代码 并且还有使用它的 API typedef
  • 数据库设计 - 空字段[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在与我的开发团队讨论一个问题 他们认为空旷的田地是个坏消息 例如 如果我们有一个客户详细信息表 用于存储来自不同国家 地区的客户数据 并
  • Datastax:重新准备已准备好的查询警告

    我有这个代码 UUID notUuid UUIDs timeBased PreparedStatement pstmt cqlSession prepare INSERT INTO mytable userId notifId notifi
  • 如何使用GSON将json文件解析为java POJO类

    我正在使用 GSON 解析 JSON 文件 并且想将此 JSON 对象映射到 POJO 类 问题是 JSON 中的属性名称没有驼峰式大小写 但我的 java POJO 对象具有驼峰式大小写属性名称 有没有什么想法不会影响性能 例如 JSON
  • 更新 GAC dll

    我在 GAC 中注册了一个 DLL 其中有一个错误 v4 2 0 因此 我修复了该错误 仅更新了文件版本 v4 2 1 保留程序集版本 v4 2 0 并构建了一个新的 MSI 包 问题是 DLL 没有安装在 GAC 中 我通过右键单击 DL
  • 使结构体变得易失性是否会使其所有成员都易失性?

    如果我有 struct whatever int data volatile whatever test will test data也会波动吗 可以提出另一个问题 或者只是用另一种方式来看待原始问题 是否制作一个结构体const使其所有成