21

我认为这些术语是同义词,但 MISRA 中关于死代码的注释表明这是错误的?有什么不同?一个是另一个的子集吗?

4

4 回答 4

40

死代码- 已执行但多余的代码,要么从未使用过结果,要么对程序的其余部分没有任何添加。浪费CPU性能。

function(){
    // dead code since it's calculated but not saved or used anywhere
    a + b;
}

无法访问的代码- 无论逻辑流程如何都永远无法访问的代码。不同之处在于它没有被执行。

function(){
    return x;

    // unreachable since returned
    a = b + c;
}
于 2014-04-02T06:02:58.797 回答
4

死代码

执行无效功能的代码。基本上,如果删除不会有什么不同的东西。

无法访问的代码

由于其他逻辑而导致的代码永远不会被执行。这通常是错误的迹象。

于 2014-04-02T06:00:30.090 回答
3

无法访问的代码

在程序执行期间控制流永远不会进入的代码。即无法访问的代码是在程序执行过程中从未执行过的代码。

死代码

无论控制流如何在程序中流动,都对其后面的代码没有影响的代码那就是死代码是在程序执行过程中不需要执行的代码,或者换句话说,是无用的。

因此,实际上,它们都不是另一个的子集。但是作为代码优化的一部分,编译器通常会在编译过程中删除无法访问的代码和死代码。

于 2015-02-25T13:31:59.723 回答
1

无法访问的代码是永远不会执行的东西,因为没有流控制来访问代码。

死代码是可以(或可能)执行的东西,但它的结果从未被使用过。

于 2017-01-23T16:47:49.520 回答