gpt4 book ai didi

c++ - Clang 不会在编译时为非 constexpr 变量计算 constexpr 函数的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:29 25 4
gpt4 key购买 nike

部分代码:

constexpr int sum(int a, int b) {
return a + b;
}

int main() {
int a = sum(4, 5);

return 0;
}

我用 clang-9 编译这段代码,但它在编译时不会计算 main 函数中 int a 的值。如果我使用 constexpr int a clang 会在编译时评估它,但我无法在运行时更改此变量。

但是 gcc-7.1 在编译时计算 int a 的值。

为什么会这样?如何解决?

最佳答案

当您希望在编译时预先计算一个值然后绑定(bind)到允许修改的标识符时,您只能通过使用 constexpr 初始化非 constexpr 对象来强制执行此操作 对象:

constexpr int init = sum(4, 5);
int a = init;

关于c++ - Clang 不会在编译时为非 constexpr 变量计算 constexpr 函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com