【发布时间】:2016-04-15 21:28:53
【问题描述】:
我知道volatile 变量背后的概念。基本上所有对该变量的读写必须发生。有没有办法让优化器只做所有的写入并假设读取将始终保持不变(除非通过写入修改)。
另外(沿着相同的思路)有一种方法可以为编译器定义一种新的内存类型来存储变量。例如,如果我有一个带 SD 卡的微控制器,我可以将 SD 卡定义为存储内存的地方(或者我是否明确必须自己完成所有读/写操作)。
作为记录,如果我可以在 gcc 上专门(且仅)做任何事情,我将使用 gcc 作为我的编译器
【问题讨论】:
-
要检测变量被写入修改,编译器必须生成代码......读取变量
-
@Lashane 但是如果它假设除非它写入它,否则什么都没有改变(换句话说,没有其他线程会改变它)它可以判断它是否被改变(理论上)......跨度>
-
答案是“不”。
-
@Lashane 但我想强迫它完成所有的写入......只是不关心每次都重读它
-
一个例子是缓存。变量的写入将进入 SDCard 以及缓存。读取将引用缓存。
标签: c++ c gcc optimization