【问题标题】:Project Settings Recommends Compiler Warning: "Suspicious Moves"项目设置推荐编译器警告:“可疑动作”
【发布时间】:2016-12-19 18:48:45
【问题描述】:
在一个 Xcode 项目中,我收到一个奇怪的警告。它是什么?这是一件坏事吗?
这是警告:
Project 'Little Hoot' - 启用推荐警告
这将启用以下推荐的编译器警告:
还建议我也更新另一个设置。
目标 'Little Hoot' - 更新 C++ 标准库
'libstdc++' C++ 标准库已弃用。这会将 Target 'Little Hoot' 的设置更新为 'Compiler Default',这是推荐值。
我在网上查过了,但至少第一次警告我找不到答案。
【问题讨论】:
标签:
c++
xcode
compiler-warnings
【解决方案1】:
“可疑动作”项目/目标设置似乎控制 LLVM/Clang 中的 -Wmove 编译器警告选项,这是一组其他 3 个警告选项:-Wpessimizing-move、-Wredundant-move 和 -Wself-move。
这些选项会生成以下警告:
warning: moving a temporary object prevents copy elision
warning: moving a local object in a return statement prevents copy elision
warning: redundant move in return statement
warning: explicitly moving variable of type A to itself
(来自http://clang.llvm.org/docs/DiagnosticsReference.html 的 Clang 文档)
因此,您是否接受建议并启用警告可能没什么大不了的。如果你用这些可疑的动作让事情变慢,你不会被告知。
【解决方案2】:
我最近在设置一个新项目时也从 Xcode 收到了这条消息。我的步骤是从文件(例如 Info.plist)中删除引用,直接在 Finder 上创建文件夹,并将文件添加回 Xcode。我想这是一个安全功能,但如果你的情况和我的一样,那只是一个警告。
【解决方案3】:
这两个警告都涉及项目中的设置,未反映推荐的默认值。它们可能都是在您升级 Xcode 版本或将旧项目导入更高版本的 Xcode 后触发的。
除非您有充分的理由不这样做,否则最好遵循建议。最简单的方法是单击警告旁边的黄色三角形,并允许 Xcode 对设置进行适当的更改。
【解决方案4】:
您应该打开所有警告,除了迂腐警告、未使用的参数和自动综合属性;这三个警告警告大量好的代码。静态分析器警告也是如此。
然后您查看收到的警告并修复它们。如果您以前没有这样做过,那么我估计所有警告中有 20-40% 是您代码中的实际错误。
【解决方案5】:
您将能够see warning detail in issue navigator section。您可以通过选择问题来修复它。这将显示一条警报,说明需要在项目设置中进行的必要更改。
点击执行更改按钮。这将对项目设置进行必要的更改,从而消除此警告。