为了账号安全,请及时绑定邮箱和手机立即绑定

以下问题是关于C++ constexpr?求大家帮忙看看!

以下问题是关于C++ constexpr?求大家帮忙看看!

C++
肥皂起泡泡 2021-08-30 18:13:07
int main() {const auto staff_size = 27;constexpr auto* p1 = &staff_size;return 0;}运行结果错误如下?原因?error: ‘& staff_size’ is not a constant expression constexpr auto* p1 = &staff_size;
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

因为staff_size是个局部栈变量,它的地址要在运行时才能得到,而constexpr auto* p1要求对p1赋值的地址是个能在编译期就能确定的常量,所以出错。可以把staff_size定义为静态变量或者全局变量,这样编译期就可确定其地址了:
int main() {
static const auto staff_size = 27; //static静态的
constexpr auto* p1 = &staff_size;
return 0;
}

查看完整回答
反对 回复 2021-09-06
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

constexpr 是要在"编译"的时候能求出值的表达式。
&staff_size 没法在编译时求出地址值吧...

查看完整回答
反对 回复 2021-09-06
  • 2 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信