gpt4 book ai didi

c++ - 找不到 Xcode build设置 - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS

转载 作者:行者123 更新时间:2023-11-30 03:55:02 27 4
gpt4 key购买 nike

我正在使用 Xcode 6.2 构建 C++ 命令行应用程序。

Xcode build设置引用指出:

如果您使用 C++ 开发产品,您可能需要在您的目标中自定义这些build设置:

GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS(有效 C++ 违规)

但是这个选项没有出现在我的任何目标的build设置列表中。

谁能告诉我它在哪里?

最佳答案

有问题的设置不再有任何影响 - 如果您将它放入 pbxproj 文件,它会在 UI 中显示为用户定义的设置。

该设置仅适用于 gnu g++ 编译器,xcode 不再随该编译器一起提供(它随 clang++ 和一个 g++ 调用 clang++ 的包装器)。对使用 g++ 触发的某些条件的简短测试不会使用 clang++ 触发,例如:

#include <string>

using std::string;

class foo {
string x;
int y;
void *ptr;

public:
foo() : y(1), ptr(0) {}
};

$ g++-4.9 -c -Weffc++ evil.cpp
evil.cpp:5:7: warning: 'class foo' has pointer data members [-Weffc++]
class foo {
^
evil.cpp:5:7: warning: but does not override 'foo(const foo&)' [-Weffc++]
evil.cpp:5:7: warning: or 'operator=(const foo&)' [-Weffc++]
evil.cpp: In constructor 'foo::foo()':
evil.cpp:11:5: warning: 'foo::x' should be initialized in the member initialization list [-Weffc++]
foo() : y(1), ptr(0) {}
^
$ clang++ -c -Weffc++ evil.cpp
$

有人认为它太嘈杂而无用 - 例如关于未初始化 x(std::string)的提示在这种情况下是毫无意义的警告,因此带来的麻烦多于它的值(value)。

您可以手动将-Weffc++选项添加到C++代码的编译标志中,您可以将其添加到Other C++ Flags选项中,该选项位于下Apple LLVM X.Y - 自定义编译器标志(X.Y 取决于您的 XCode 版本),但基于 LLVM 的编译器同样不会处理该选项。

It looks like the documentation is out of date for this option - I've logged a radar to have the option removed from the docs to prevent this confusion.

关于c++ - 找不到 Xcode build设置 - GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com