Ole*_*ann 5 c++ warnings visual-c++
在自动重命名大项目中的许多变量的过程中,我可能已经创建了很多这样的东西:
class Foo {
int Par;
void Bar(int Par) {
Par = Par; // Nonsense
}
};
Run Code Online (Sandbox Code Playgroud)
现在我需要识别这些位置以纠正它们.例如,进入"this-> Par = Par;".不幸的是,即使有所有警告,Visual C++编译器也没有给我任何评论.我记得有一次警告它.它说"代码没有效果"或其他什么.但它似乎已经消失,可能是因为有些人使用这种做法来避免"未引用的参数"警告.有没有办法重新激活该警告?海湾合作委员会在这里警告吗?任何的想法?
一些编译器可以生成警告:
-Wshadow
选项,GCC和Clang可以对这样的代码发出警告.(具体来说,虽然他们没有警告无意义的赋值,但他们会警告局部变量Par
遮蔽成员变量Par
- 你可能会也可能不会这样.)Par = Par
是无用的,但它可以警告Par
它在分配后不会被使用,这应该满足你的需要.我怀疑像PC-Lint这样的工具也可以识别这样的代码.
另一种解决方案是将您的参数标记为const
:
class Foo {
int Par;
void Bar(const int Par) {
Par = Par; // Compiler error!
}
};
Run Code Online (Sandbox Code Playgroud)
const
传值参数不是函数签名的一部分,因此您只需将其添加到.cpp
文件中的函数定义中,而不是文件中的函数声明.h
.换句话说,这样做是合法的:
// foo.h
class Foo {
int Par;
void Bar(int Par);
};
// foo.cpp
void Foo::Bar(const int Par) { ... }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
271 次 |
最近记录: |