gpt4 book ai didi

c++ - 用 C++ 进行 const 初始化

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:53 25 4
gpt4 key购买 nike

以下方面有什么区别:

#include <iostream>

using namespace std;

int get_value(int value){
return 3 * value;
}


int main(int argc, const char * argv[])
{

const int a = 5;
const int b = get_value(4);


return 0;
}

唯一的区别是 const int a 存储在 bss 部分而 const int b 不是,并且两者仍然由编译器强制执行。

那么既然a in 存储在bss 中是不是更快?由于 a 中的 const 是编译时计算的,这是 constexpr 的用例吗? constexpr 会使 const in b 存储在 bss 部分吗?

布莱尔

最佳答案

由于您在问题中包含了 constexpr 标记,我假设您可以使用 C++11 constexpr,因此您可以将函数更改为 constexpr int get_value(constexpr int value); 然后使用功能类似于 constexpr int b = get_value(4);。这将确保计算将在编译时完成,并且 b 可以像预处理器常量一样被编译器优化掉。然而,如果在你的程序中的任何地方,你得到一个指向 b 的指针(例如 int* p = &b),b 没有被优化,因此在运行时存储在内存中。

关于c++ - 用 C++ 进行 const 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318834/

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