C中是否存在复制省略?

时间:2015-07-03 06:09:42

标签: c optimization compiler-construction copy

当我读到有关复制省略的文章时,许多来源只提到了C ++而不是C。

他们说明了如果编译器认为这是正确的事情,C ++标准如何允许进行这种优化。

但是C怎么样? C编译器是否执行复制省略,或者C标准保护者是否会永远不会优化副本?

1 个答案:

答案 0 :(得分:5)

C和C ++都允许遵循 as-if 规则的任何优化。由于C不具有构造函数 - 因此具有副作用的构造函数 - 可以在不违反此规则的情况下省略复制。另一方面,C ++需要做一个特殊情况,允许实现以 as 来打破。

因此,通过 as-if 规则隐式地在C中复制elision。