如何在可执行文件中存储常量数组?

how to store a const array in executable?

本文关键字:常量 数组 存储 可执行文件      更新时间:2023-10-16

我想存储一个计算的 const 数组,以便a[i] = i*i -3;

这是我的想法,但我不确定:

constexpr int fun(int x) {
return x * x - 3;
}
template<int N>
struct A {
constexpr A() : array() {
for (auto i = 0; i != N; ++i) array[i] = fun(i); 
}
int array[N];
};
const A<4> array1{};
const int array2[] = {-3, -2, 1, 6};

我认为array1是初始化的,而不是像array2那样存储在可执行文件中。

是否可以在不使用宏的情况下执行此操作?

是否可以在不使用宏的情况下执行此操作?

委托构造函数呢?

template<int N>
struct A {
template <int ... Is>
constexpr A(std::integer_sequence<int, Is...>)
: array{ fun(Is)... }
{ }
constexpr A() : A{std::make_integer_sequence<int, N>{}}
{ }
int array[N];
};