如何停止优化器丢弃未使用的变量?

2024-04-23

我想调试我的代码,但无法访问进程中的内部层,因为这会干扰与硬件的通信。 (在监视列表会干扰基本读取访问的情况下执行易失性操作。)

因此,我正在测试接口的返回值,但 IAR 编译器甚至会优化未使用的易失性变量。

和这样的声明:

i = object.foo();
if (i)i=i;

也没有帮助。

我发现这里只是回答了针对该情况使用 i/o 操作的建议。但这也不是选择,因为我没有包含 C 标准库的选择。并且项目本身不需要 i/o,没有自己的输入/输出函数变体。

那么除了禁用优化器之外我还有什么选择呢?


最可靠的方法是在链接器文件中找到强制链接某个变量的设置。但这当然完全取决于系统。

否则,可移植的标准解决方案就是简单地编写(void)i;代码中的某处。这适用于大多数编译器。如果没有,您可以更进一步:

#ifdef DEBUG_BUILD
volatile int dummy;

// all variables you would like to have linked:
dummy = i; 
dummy = j;
...
#endif

或者,如果您喜欢晦涩的宏:

#define FORCE_LINKING(x) { void* volatile dummy = &x; }

(void*因为这是泛型类型并且适用于每种变量。* volatile使指针本身易失性,这意味着禁止编译器优化对其的写入。)

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

如何停止优化器丢弃未使用的变量? 的相关文章

  • C++ win32设置光标位置

    我知道要使用哪个功能 但我无法让它正常工作 我用了SetCursorPos 唯一的问题是它将光标设置为屏幕坐标而不是窗口坐标 我也尝试过ScreenToClient 但它并没有起作用 这是我的代码 pt x 113 pt y 280 Scr
  • LINQ TO ENTITY 无法与枚举类型进行比较

    下面是枚举叶子 public enum Leaves Annual 0 Medical 1 Hospitalization 2 Unpaid 3 下面是linq查询 public ActionResult ApproveLeave int
  • Lambda、封闭变量、显示类、可序列化性和流行层

    我已经为 Compact Framework 实现了一个流行层 包括BinaryFormatter 类似序列化器 我希望能够在适当的情况下序列化编译器生成的类 这些类是由 lambda 和迭代器等产生的 这样如果 例如 lambda 及其封
  • DataGridView 自动完成组合框列不保留初始单元格离开时的值

    我有一个带有自动完成组合框列的绑定 dataGridView 并且自动完成功能正在工作 只是我观察到一种有点令人恼火的行为 当我第一次在自动完成单元格中键入文本并使用 tabKey 移动到下一个单元格时 我的选择不会保留 我选择的内容将被清
  • F1 2019 UDP解码

    我目前正在为 F1 方向盘开发自己的显示器 F1 2019 由codemasters提供 通过UDP发送数据 该数据存储在字节数组中 我在解码返回的数组时遇到一些问题 问题是我得到了很多信息 但我不知道如何处理它们 我将向您介绍我所尝试过的
  • 是否已经有一些基于 std::vector 的 set/map 实现?

    对于小型集合或地图 通常使用排序向量而不是基于树的向量要快得多set map 特别是对于 5 10 个元素的情况 LLVM 有一些类本着这种精神 http llvm org docs ProgrammersManual html ds se
  • 将 CryptoStream 解密为 MemoryStream

    我编写了一个过程 其中文件被加密并上传到 Azure 然后必须解密下载过程 这会失败并出现 填充无效且无法删除 错误 或 要解密的数据长度为无效的 错误 我在网上尝试了很多解决方案 包括C 使用 RijndaelManaged 和 Cryp
  • 如何创建 .bat 文件来运行 C# 代码?

    我需要的是 我有一个 C 代码 我想构建它以便在桌面上创建一个 bat 文件 因此 当我从桌面运行这个 bat 文件时 它应该执行 C 代码 有没有办法在编译之前更改 c 项目的设置或属性 以便创建应运行此 c 代码的 bat 文件 将 C
  • 枚举和枚举类之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下两者之间的区别 enum Type1 type2 And enum class Type1 type2 我经常使用前者 可能太频繁而没有足够的封装 但我从未使用过第二个例子 Thanks enum A
  • 实体框架..自引用表..获取深度=x的记录?

    我成功地在实体框架中使用自引用表 但我不知道如何获得所需深度的记录 这应该是什么逻辑 Model public class FamilyLabel public FamilyLabel this Children new Collectio
  • 如何在 .NET 6.0 中使用最小 Api 配置 Newtonsoft Json

    I have net6 0具有最少 api 的项目 我想使用NetwtonsoftJson而不是内置的System Text Json用于序列化和反序列化的库 目前我有这个配置JsonOptions并且按预期工作 builder Servi
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • 使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3

    我已经创建了 Windows 服务并使用本地系统帐户运行它 该服务正在读取用户文件并查找其所有者 在获取文件的访问权限以查找所有者时 它抛出以下异常 方法失败 出现意外错误代码 3 StackTrace 在 System Security
  • C# 中的自定义按钮:如何删除悬停背景?

    我正在尝试使用 Visual Studio 2005 对我的表单 其 FormBorderStyle none 执行自定义按钮 我在链接到该按钮的 ImageList 中有我的 3 种状态按钮图像 this btnClose AutoSiz
  • 虚拟键盘(类似 Swype 键盘)Windows 窗体应用程序 C#

    我正在尝试使用 c 在 Windows 窗体中创建一个类似 swype 的键盘 我有两个问题 A 我无法重现手指滑动动作 b 我无法识别不同按键下的字母 对于第一个问题 我使用了 Graphics 类和 Pen 类 并像这样使用它 bool
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 如何在 C++ 中打印变量的名称? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中获取变量名称的编程方法 https stackoverflow com questions 1623111 programmatic way to get variable name in c
  • 在.Net中使用ObjectCache缓存对象并设置过期时间

    我陷入了一个场景 我的代码如下 更新 它不是关于如何使用数据缓存 我已经在使用它及其工作 它是关于扩展它 以便该方法在到期时间和从外部源获取新数据之间不会进行调用 object string this GetDataFromCache ca

随机推荐

  • Android:从触摸事件获取原始位图数据

    Is there a possibility to get an array bitmap with the raw data of the touched spots on an Android touch display See ill
  • Flutter 从 Future 方法返回 bool 类型

    这个问题与this https stackoverflow com questions 52477468 flutter futurebool vs bool type但解释对我的用例并没有多大帮助 我有一个 Future 类型的方法 它返
  • java中的动态方法调度

    class A int a 10 public void show System out println Show A a class B extends A public int b 20 public void show System
  • SQL Server 使用参数导致结果缓慢

    我有一个选择一些数据的查询 我在其中传递了一些参数 DECLARE FromAccDocNo INT 1 ToAccDocNo INT 999999999 FromDate CHAR 10 1900 01 01 ToDate CHAR 10
  • 如何设置像“YYYYMM”这样的 Postgresql 默认值日期戳?

    作为标题 如何将表的列设置为当前年份和月份的默认值 格式为 YYYYMM 例如今天的 200905 请记住 日期的格式与存储无关 如果您认为日期很重要stored在这种格式中 您需要定义自定义数据类型或将其存储为字符串 然后你可以使用组合e
  • 将 csv 列放入数组中

    我有一个带有列标题的 csv 描述 库存 mfgid 以及我不需要的其他一些标题 我需要从数组中的列标题 stock 和 mfgid 获取数据 我正在使用 fgetcsv 但它将整行放入数组中的独占键中 在 stackoverflow 上找
  • 如何将 Ruby 编译为 Javascript? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在研究一段逻辑 我想在服务器和浏览器中表达它 类似于验证表单 其中基于已输入的内容 元素之间必须存在某些逻辑关系 所以 如果我可以编写
  • 统一使用单例的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道哪种是使用单例实例的正确方法 当我创建一个名为 Manager 的单例类并且它包含一个名为 value 的 int 变量并且我有另一个名
  • 通过代理服务器访问HTTPS站点

    我正在添加代码以使用代理服务器访问互联网 从正常 HTTP 位置请求文件时 该代码可以正常工作 但在访问安全位置 HTTPS 时则不起作用 这是运行良好的代码 URL http UnSecureSite net file xml Dim w
  • Blob 转换:获取 xlsx 文件

    我正在尝试发送一封电子邮件 其中包含xlsx文件已附加 但我遇到的问题是 当我下载该文件时 该文件以 PDF 格式打开 这是我的代码 function sendMail var sheet SpreadsheetApp getActiveS
  • React Native 中无法读取 null 错误的属性“绑定”

    从反应本机运行应用程序时 我在模拟器 设备上收到以下错误消息 ERROR The development server returned response error code 500 URL http 10 0 2 2 8081 inde
  • 语义版本控制中 -rc 的含义是什么?

    我了解了 MAJOR MINOR PATCH 的逻辑 并且直观地了解了 semver 编号末尾的 alpha 和 beta 的含义 但 rc 并没有给我敲响任何警钟 在那里找不到满意的答案 gt https semver org https
  • 基于带有图标的列的数据表搜索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一个带有状态列的数据表 我正在考虑提供搜索图标的可能性 因此 如果有人在搜索框中键入 打开 它应该显示带有 打开 图标的所有
  • 在 Windows 上安装 Pinax

    我可以安装吗Pinax http pinaxproject com 在 Windows 环境下 有简单的方法吗 您推荐哪种环境 我安装了 pinax 0 7rc1 并在 Windows 7 上运行 没有任何问题 请观看此视频 了解如何执行此
  • 更改文本字体大小以适应浏览器语言翻译时的 div 容器,而不是在视口更改上[重复]

    这个问题在这里已经有答案了 NOTE 这与响应视口更改的字体更改不同 IE 字体大小 3 2vw 纯 CSS 使字体大小根据动态字符数量进行响应 https stackoverflow com questions 14431411 pure
  • Pandas:删除重复索引的所有记录

    我有一个数据集 其中可能包含重复的标识符记录appkey 理想情况下 重复的记录不应该存在 因此我认为它们是数据收集错误 我需要删除一个的所有实例appkey这种情况发生不止一次 The drop duplicates方法在这种情况下没有用
  • 在 Jetty 中运行的 Grails 在没有布局模板的情况下呈现 404 错误页面

    我有一个 Grails 2 0 1 应用程序 我设置了以下 UrlMapping controller home 500 view error serverError 404 view error notFound 这是我的 notFoun
  • 如何在AWS中获取EC2实例的arn

    如何获取AWS中ec2实例的arn 我正在尝试使用资源标签 api 将标签添加到 EC2 实例 资源标签 api 需要所有资源的 arn 我如何获取它 您可以自己 构建 它 arn aws ec2
  • 如何将 UIImage 旋转 90 度?

    我有一个UIImage那是UIImageOrientationUp 纵向 我想逆时针旋转 90 度 横向 我不想使用CGAffineTransform 我想要的像素UIImage实际转移位置 我正在使用一段代码 如下所示 最初旨在调整UII
  • 如何停止优化器丢弃未使用的变量?

    我想调试我的代码 但无法访问进程中的内部层 因为这会干扰与硬件的通信 在监视列表会干扰基本读取访问的情况下执行易失性操作 因此 我正在测试接口的返回值 但 IAR 编译器甚至会优化未使用的易失性变量 和这样的声明 i object foo