一种基本的方法:在初始化期间填充数组。但是该数组是静态的,并且已经占用了图像中的空间。您需要以某种方式告诉编译器用特定值填充数组的区域。代码static int arr[5]={1}填写为{1, 0, 0, 0, 0},但需要{1, 1, 1, 1, 1}
__attribute__((fillupper(1)))被 gcc 忽略。
该数组是非常量的。一个有 5 个元素的数组就是一个例子。您需要填充 4096 个元素的数组。STL 功能的使用受到严格限制,包括衍生产品。它们都有第一句话中指出的基本解决方案。
编辑答案:
template <typename type, type v>
struct IArray {
type val = v;
IArray& operator=(type n){
val=n;
return *this;
}
IArray& operator|=(type n){
val|=n;
return *this;
}
};
您需要为所需的转换添加/更改运算符。
不要打我。只找到了
asm一种方法。错误答案: 使用memset很容易。例子:
结果将是代码:
如您所见,没有区别,只有 0 和 1 。
GCC 支持非标准语法
但这是指定初始化器功能的扩展,即 这是 C,不是 C++。
也就是说,如果此选项适合您,则可以在 C++ 项目中使用
并且在 C++ 代码中已经添加
如果你愿意捐赠
static。https://godbolt.org/z/6-BEPi
PS :)
升级版:
UPD2:
你可以写一个函数
然后
调用它后你会得到想要的结果
或者使用标准算法