1

在以下方面有什么区别:

#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 部分中吗?

布莱尔

4

1 回答 1

0

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

于 2013-03-14T22:29:43.120 回答