我正在使用开源项目(NSBKeyframeAnimation)来处理我的项目中的一些动画。以下是我正在使用的方法示例:
double NSBKeyframeAnimationFunctionEaseInQuad(double t,double b, double c, double d)
{
return c*(t/=d)*t + b;
}
我已将我的Xcode更新为5.0,此项目中的每个方法都开始向我显示如下警告: “无序修改和访问't'” 。我应该将所有方法重写为objective-c还是有另一种方法来消除所有这些警告?
答案 0 :(得分:16)
表达式c*(t/=d)*t + b
的行为是 undefined ,你应该修复它,
例如到
t /= d;
return c*t*t + b;
有关详细说明,请参阅示例Undefined behavior and sequence points。
答案 1 :(得分:5)
可以禁用这些警告
在触发警告的代码
之前加上这个#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunsequenced"
以及此代码之后
#pragma clang diagnostic pop
但是,没有什么能保证编译器能够优雅地处理这种情况。
我来到这个页面是因为我在完全相同的源文件中收到了50个警告。
我很感激这些功能,但是程序员应该意识到尝试在一行上编写所有东西都是“1980年代”,当编译器没有像今天那样优化时。
当赢得几个处理器周期真正重要时,我们只有几百万,而不是我们现在拥有的数十亿。
我总是先把可读性放在首位。