10 c++ xcode visual-studio-2010
在Xcode中,编译很好:
float falloff = fmin(1.0, fmax(0.0, distanceSqrd/cRadius));
Run Code Online (Sandbox Code Playgroud)
但是在Visual Studio 2010中它出错了,我必须使用max而不是fmax.distanceSqrd和cRadius也都是浮点数.
这是我的代码中唯一没有无缝交叉编译的部分......
有什么想法吗?
Chr*_*ica 17
功能std::fmax和std::fmin从<cmath>头部(或fmax和fmin来自<math.h>)是一个C++ 11功能,并与其他许多新的数学函数以及一个Visual Studio 2010中尚不支持(同样没有2012).因此,对于便携性最好是通过替换它们std::min和std::max从<algorithm>.
实际的区别是,fmin和fmax上浮点数和源自工作数学函数C99(以及可能被实际专门的CPU指令,其中可能intrisically实现),而min并max是一般的算法在任何类型的配套使用<(并很可能只是一个简单的(b<a) ? b : a而不是一个浮点指令,但实现甚至可以这么用的专业化min和max,但我怀疑这一点).
对于特殊的浮点参数,它们的行为也略有不同.虽然没有完全指定如何min和max将响应NaNs,我认为(虽然从上面的定义它们应该总是返回第一个操作数),fmin并且fmax明确指定总是返回另一个(非NaN)参数NaN,如果是实现符合IEEE 754标准(任何现代PC实现通常都是这样).
| 归档时间: |
|
| 查看次数: |
10353 次 |
| 最近记录: |