c编译器是否会通过`reference`优化未使用的返回值?

前端之家收集整理的这篇文章主要介绍了c编译器是否会通过`reference`优化未使用的返回值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@
在有人跳过之前,在配置文件进行优化之前,这只是一个好奇的问题,源于 this original question.

如果我通过引用返回相同的对象,那么如果不使用它会被优化掉?例如,我有一个Vector<>具有各种数学功能(假设我不使用操作符重载).两种写法:

inline void Vector::Add(const Vector& in) // Adds incoming vector to this vector

要么

inline Vector& Vector::Add(const Vector& in) // Adds incoming vector to this vector and returns a reference to this vector

现在如果在不使用返回值的情况下使用Add(),编译器会简单地丢弃返回值,并且函数就像没有返回值一样开始吗?如果没有内联怎么办?

解决方法

引用作为参数或返回语句通常以类似于指针的方式实现,并且成本最小(在大多数情况下可忽略).根据调用约定,它可以是寄存器中的单个存储.

关于是否可以优化返回值,除非编译器正在编写代码否,否则不能.当编译器处理函数时,它不知道调用代码是否使用return语句,这反过来意味着它必须总是返回一些东西.

猜你在找的C&C++相关文章