为什么我没有在未使用的局部变量上遇到编译器错误?

时间:2015-12-18 22:32:39

标签: compiler-errors d language-lawyer declaration local-variables

Dlang documentation州:

  

声明一个从未引用的局部变量是错误的。   死变量,如不合时宜的死代码,只是一个来源   维护程序员的困惑。

我已在ldc 0.14gdc 5.1dmd 2.067.1中汇编了以下代码:

void main()
{
    int i;
    //local variable i not used...
} 

我没有遇到任何编译错误。这会不会编译?

2 个答案:

答案 0 :(得分:3)

很多错误都没有实际实现。它们是很好的东西,编译器编写者保留出错的权利(根据规范的理由,你的代码无论如何都是错误的),但实际上并没有......也许永远不会真正做到。< / p>

  

使用局部变量而不首先为其赋值是错误的。实施可能并不总是能够检测到这些情况。其他语言编译器有时会对此发出警告,但由于它始终是一个错误,因此应该是一个错误。

由于人们依赖自动初始化作为一项功能,因此没有实施,也可能永远不会实现。

  

声明一个从未引用的局部变量是错误的。死变量,如不合时宜的死代码,只是维护程序员混淆的一个原因。

未实施

  

返回本地变量的地址或引用是错误的。

仅部分实施。

答案 1 :(得分:2)

我从未见过编译器为未使用的变量生成错误。警告肯定但错误号

我建议您尝试检测它们的Dscanner,尽管它有时会发出错误的警告,特别是如果用作out参数。