cost 71 ms
结构中的挥发性导致宏中的警告 - Volatile in struct causing warning in macro

我使用以下类型: 在我的代码中,我使用volatile关键字声明了一个双缓冲区数组(因为可以在中断和函数中异步更新/读取缓冲区): 然后我分别初始化这些缓冲区: 当我编译软件(gcc)时,我收到以下警告: 我不太清楚我收到此警告的原因,而且我不确定如何解决它。 任何帮助将不胜感激(如果不清楚,我可以 ...

序列点之间能否多次读取volatile变量? - Can volatile variables be read multiple times between sequence points?

我正在制作自己的 C 编译器,以尝试了解有关 C 的尽可能多的细节。我现在正试图准确了解volatile对象的工作原理。 令人困惑的是,代码中的每个读取访问都必须严格执行(C11,6.7.3p7): 具有 volatile 限定类型的 object 可能会以实现未知的方式进行修改或具有其他未知的副 ...

在没有编译器优化的情况下,特定于平台扩展的 volatile-specifier 替换为硬件寄存器访问? - Platform-extension-specific replacement for volatile-specifier as hardware-register access without compiler optimizations?

在 C++20 及更进一步的版本中,变量的 volatile 说明符在很大程度上已被弃用。 使用 GCC 的嵌入式开发人员长期以来一直依赖这个(有缺陷的)说明符。 代码图中可能出现副作用的概念,代码中的 C++ 语句不清楚,这不是一个好的 C++ 核心语言标准想法。 GCC 实现了它自己的 C+ ...

我可以使用比 INDRIECT() 更不易挥发的不同的 function - Can I use a different function which is less volatile than INDRIECT()

我目前正在使用 INDIRECT() function 在列表中搜索与 google 工作表中的选项卡名称相关的名称列表,然后显示与此相关的特定单元格。 选项卡名称可以每月更改,因此我一直在使用 INDIRECT() 但我现在知道这是易变的并且并不总是自动重新计算我使用的公式如下,其中 AK17 ...

C++ 易失性中断 ISR DMA - C++ volatile Interrupt ISR DMA

我知道关于 volatile 有很多困惑。 所以我有 3 个现实生活中的例子,我不确定 volatile 的正确用法。 1)DMA Stream 硬件使用 DMA 直接写入数据。 这个跨度需要 volatile 吗? 2) 中断服务程序读取此示例与第一个示例类似,但现在 ISR 实际上是在操作 ...

function 的可变参数? - volatile argument to a function?

这个问题有 @ideasman42 的评论说: 不确定它是否值得另一个问题,但有兴趣知道为什么你会写 void func(int volatile arg); 我认为这值得一个问题,但没有看到一个问题,所以就在这里。 如果有的话,这样做的效果是什么? 是什么激发了我的灵感,是编写了一组与 Rasp ...

如何避免在 volatile 类中重复方法 - How to keep from duplicating methods in volatile classes

假设我有以下非常简单的类: 如果我尝试按如下方式使用它: 代码将无法编译。 我理解为什么这是真的基于: Defining volatile class object 我知道解决方案是添加一个额外的方法,如下所示: 顺便说一句,我知道返回 volatile 引用会在未使用时发出警告。 我的问题是,在这 ...

2022-12-14 21:05:43   2   64    c++ / volatile  
从汇编的角度来看 static 和 volatile 关键字 - static and volatile keywords from assembly point of view

我知道有很多这样的问题,但这个问题不是关于static和volatile从 C 标准的角度来看意味着什么。 我对发生的事情感兴趣——在装配层面。 变量的static关键字使这些变量静态可见(静态存储持续时间),如全局变量。 为了让它成为现实,编译器应该将这些变量写入.bss部分或其他地方? 此外, ...

一个 volatile constexpr 变量可以在 C++ 中初始化另一个吗? - Can one volatile constexpr variable initialize another one in C++?

C++ 标准允许每个缺陷报告 1688的constexpr volatile变量,已于 2013 年 9 月解决: 这种组合是有意允许的,并且可以在某些情况下用于强制常量初始化。 看起来其意图是只允许constinit volatile ,这在 C++20 之前是不可用的。 在某些情况下,当前的 ...

Java 非最终字段强制使用另一个易变字段的可见性 - Java non-final fields force visibility with another volatile field

我最近开始了解 Java Memory Model 是如何工作的(我还不完全了解)。 我现在明白,如果我的类中有非最终的、非易失性字段,那么这些字段的值可能不会立即对其他线程在构造后可见,例如 我不确定的是天气,如果我添加第三个 volatile 变量并将其设置在最后,是否可以保证对a和b的写入对其 ...

JMM:为什么这个结果是非法的? - JMM: Why this outcome is illegal?

我最近在jcstress中偶然发现了这个例子: 作者强调,由于增量不是原子操作,因此不能期望每次循环迭代只会“丢失”一个增量更新。 因此,除了0和1之外的所有结果(最多10 )都是允许的(并且确实发生了)。 我明白为什么不允许0 :在对象的默认值的初始化和 JLS 中所述的每个线程中的第一个操作之 ...

Java volatile memory 排序及其在 x86-64 上的编译 - Java volatile memory ordering and its compilation on x86-64

考虑以下简单的 Java 应用程序: 问题:读入局部变量是否可能导致thread1::b = 0和thread2::a = 0 ? 我无法证明从 JMM 的角度来看它不会发生,所以我开始分析x86-64的编译代码。 以下是编译器对方法thread1和thread2的最终结果(与 while 循环无关 ...

易失性 function(可以是宏),允许我在两个值之间交替 - Volatile function (can be macro) that allows me to alternate between two values

我想创建一个“转弯”系统。 我希望我的电子表格在一个单元格中返回,这是我在一列中的两个值之一,但我希望它按顺序返回 A栏 B栏文本1 返回值正文 2 在返回值单元格中,我想显示 TEXT 1,在我运行另一个宏之后,我希望它更改为 TEXT 2,并继续在两个值之间永远交替,即返回 T1,动作,返回 T ...

睡完后什么线程? 在思考 leetcode 问题时:按顺序打印 - What thread does after finishing sleeping? while thinking leetcode question: Print in Order

我正在做 leetcode 问题: https://leetcode.com/problems/print-in-order/并在这里尝试不同的解决方案: 我可以理解我们使用 volatile 使解决方案 3 中的不同线程共享 var 以避免无限循环。 如果我删除 volatile,Leetcode ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM