波动是否多余?

问题描述 投票:2回答:1

这是alglib库的样本函数(C ++),用于相等的检查:

ae_bool ae_fp_eq(double v1, double v2) {
    /* IEEE-strict floating point comparison */
    volatile double x = v1;
    volatile double y = v2;
    return x==y;
}

在此代码中使用volatile的原因是什么?

如果删除它怎么了?

c++ volatile
1个回答
0
投票

为了简单起见,请考虑以下两个不同的简单声明:

int a;          // first
volatile int a; // second

如果变量a在整个程序中未使用,或者如果a中存储的值未使用,或者是a是全局变量,其值由中断服务程序更新,则编译器将不会计算[ C0](即,它将忽略整个代码)。通过指定关键字volatile,我们确保编译器不会对变量执行这些优化。

如果您指定编译器的优化标志a,则可以看到volatile的差异,它将删除所有不需要的变量。]​​>

就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.