gpt4 book ai didi

c++ - 如何找到没有效果的作业?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:07 24 4
gpt4 key购买 nike

在一个大项目中自动重命名很多变量的过程中,我可能创建了很多这样的东西:

class Foo {
int Par;
void Bar(int Par) {
Par = Par; // Nonsense
}
};

现在我需要确定这些位置以更正它们。例如。进入“this->Par = Par;”。不幸的是,即使所有警告都打开,Visual C++ 编译器也没有给我任何评论。我记得曾经有一个关于它的警告。它说“代码无效”之类的。但它似乎消失了,可能是因为有些人使用这种做法来避免“未引用参数”警告。有没有办法重新激活该警告?GCC 在这里警告吗?有什么想法吗?

最佳答案

几个编译器可以生成警告:

  • 如果您添加 -Wshadow 选项,GCC 和 Clang 可以对这样的代码发出警告。 (具体来说,虽然它们警告无意义的赋值,但它们确实警告局部变量 Par 隐藏成员变量 Par - 你可能喜欢也可能不喜欢。)
  • Embarcadero C++Builder不会警告Par = Par没用,但会警告Par赋值后没有被使用,应该满足您的需求。

我怀疑像 PC-Lint 这样的工具也可以识别这样的代码。

另一种解决方案是将您的参数标记为const:

class Foo {
int Par;
void Bar(const int Par) {
Par = Par; // Compiler error!
}
};

const 按值传递参数不是函数签名的一部分,因此您只需将其添加到 .cpp 文件中的函数定义中,不是您的 .h 文件中的函数声明。换句话说,这样做是合法的:

// foo.h
class Foo {
int Par;
void Bar(int Par);
};

// foo.cpp
void Foo::Bar(const int Par) { ... }

关于c++ - 如何找到没有效果的作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781063/

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