В чем разница с точки зрения следующего:
#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 — нет, и оба все еще применяются в терминах компилятором.
Таким образом, поскольку в хранится в BSS это быстрее? Так как const в a вычисляется во время компиляции, это вариант использования constexpr? будет constexpr сделать const в b хранится в разделе bss?
блэр
Поскольку вы включили в свой вопрос тег constexpr, я предполагаю, что вы можете использовать constexpr в C ++ 11, чтобы вы могли изменить свою функцию на constexpr int get_value(constexpr int value);
а затем использовать функцию как constexpr int b = get_value(4);
, Это гарантирует, что вычисление будет выполнено во время компиляции, и b может быть оптимизирован компилятором как константа препроцессора. Однако, если где-либо в вашей программе, вы получите указатель на b (например, int* p = &b
), b
не оптимизирован и поэтому хранится в памяти во время выполнения.
Других решений пока нет …