C中是否存在复制省略?

Tre*_*key 4 c compiler-construction optimization copy

当我读到有关复制省略的内容时,很多来源只提到C++而不是C.

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

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

jua*_*nza 5

C和C++都允许遵循as-if规则的任何优化.由于C没有构造函数 - 因此具有副作用的构造函数 - 可以在不违反此规则的情况下省略副本.另一方面,C++需要做一个特殊情况,允许实现按原样中断.

因此,复制省略通过as-if规则隐含地存在于C中.