我完全理解为什么会出现未使用的变量警告.我不想一般地压制它们,因为它们在大多数情况下非常有用.但是,请考虑以下(人为)代码.
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Run Code Online (Sandbox Code Playgroud)
Xcode报告这saved是一个未使用的变量,当然它不是.我怀疑这是因为NSAssert1是一个宏.该NS_BLOCK_ASSERTIONS是宏没有定义,那么目标C断言肯定启用.
虽然它没有伤害任何东西,但我发现它不整洁且烦人,我想压制它,但我不知道该怎么做.将变量分配给自己可以摆脱编译器警告,但如果存在这样的事情,我宁愿以"正确"的方式进行.
在c ++ 03及更早版本中禁用有关未使用参数的编译器警告我通常使用这样的代码:
#define UNUSED(expr) do { (void)(expr); } while (0)
Run Code Online (Sandbox Code Playgroud)
例如
int main(int argc, char *argv[])
{
UNUSED(argc);
UNUSED(argv);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但宏不是c ++的最佳实践,所以.c ++ 11标准是否有更好的解决方案?我的意思是我可以摆脱宏吗?
谢谢大家!
我定义了一些用作回调的函数,并不是所有函数都使用它们的所有参数.
如何标记未使用的参数,以便编译器不会向我发出警告?
是否有任何标准方法将函数参数标记为在JavaScript中未使用,类似于在Ruby中使用下划线启动方法参数?
Java EE + IntelliJ Idea 2016.3:我编写了一个类,并使用@Inject注释声明了一个私有字段.我已成功摆脱"检查结果"窗口中的"未使用的声明"通知,添加javax.inject.Inject到设置 - >编辑器 - >检查 - > java - >声明冗余 - >未使用的声明 - >入口点 - >注释 - >标记注释时隐式写入的字段(基于此帖子).不幸的是,字段仍有下划线,滚动条上有一个黄色标记.我是单独配置还是我做错了?
该say模块为Python带来字符串插值,如下所示:
import say
def f(a):
return say.fmt("The value of 'a' is {a}")
Run Code Online (Sandbox Code Playgroud)
但是,PyLint抱怨变量'a'从未使用过.这是一个问题,因为我的代码say.fmt广泛使用.我该如何沉默这个警告?
#include <vector>
class Object
{
};
int main()
{
Object myObject;
std::vector<int> myVector;
}
Run Code Online (Sandbox Code Playgroud)
编译器发出:
warning: unused variable 'myObject' [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)
没有警告myVector.为什么?有没有办法实现这个?
有没有办法在Typescript中检测未使用的变量(类似于Javascript中的ESLint)?
谢谢.
我写的Scala插件的编辑,我用这将突出显示所有未使用的代码路径(可能是未使用defs,vals,classes和implicits),并为用户提供一个选项,以将其拔出了的.scala文件.
我怎样才能做到这一点?为了简化问题,我们假设我们只有一个单一的根级别.scala与库或任何其他代码的文件没有外部的依赖文件.
理想情况下,我希望这是一个SBT插件,给定一个这样的Foo.scala文件,将吐出Foo_min.Scala文件,删除所有未使用的代码.
我正在学习Rust,并且发现在变量名的开头添加下划线将使编译器在未使用时不会发出警告.我想知道为什么这个功能存在,因为未使用的变量是不受欢迎的.
unused-variables ×10
c++ ×2
c++11 ×1
java ×1
javascript ×1
kotlin ×1
lint ×1
objective-c ×1
pylint ×1
python ×1
rust ×1
sbt ×1
scala ×1
scalameta ×1
typescript ×1
variables ×1
xcode ×1