微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在有人跳过之前,在配置文件进行优化之前,这只是一个好奇的问题,源于 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语句,这反过来意味着它必须总是返回一些东西.

原文地址:https://www.jb51.cc/c/114911.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐