ees*_*_cu 3 c compiler-construction optimization
我有一个C代码,我正在运行一些测试.我需要访问一个数组,但是在"只读"模式下.我正在做这样的事情:
for (int i= 0; i < 1000; i++){
int a = shared_array[rand() % 64];
int b = shared_array[rand() % 64];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何从内存中获取值并确保编译器没有通过删除这些指令来优化它,因为在我的测试中我对这些值没有任何作用.即使我添加了一个操作int v = a + b,也不会在其他任何地方使用v,因此可以忽略它.
我正在使用gcc和-O3,我需要这样做才能将它与来自其他来源的结果进行比较.
强制编译器实际读取其他未使用的变量的典型方法是制作它volatile.这应该保证编译器在使用时实际从RAM读取/写入变量.