gpt4 book ai didi

c - 如何静态初始化结构数组?

转载 作者:太空狗 更新时间:2023-10-29 16:56:43 25 4
gpt4 key购买 nike

struct A{
int a; int b;
};
static const struct A a = {.a1 = 1, .a2 = 42};

struct B{
struct A[666][510]
};
static const struct B b;

我想用 a 的副本初始化 b。但是,我不能用 memcpy() 触及 static const 东西。我需要 bstatic const,因为这样它会被放入闪存而不是 ram 内存。

我该如何进行这项工作。我认为编译器是 arm-none-eabi-gcc-std=c89

最佳答案

您可以试试这个,尽管它特别适用于您指定的尺寸 (666 x 510):

#define X001 {1,42}
#define X002 X001,X001
#define X004 X002,X002
#define X008 X004,X004
#define X016 X008,X008
#define X032 X016,X016
#define X064 X032,X032
#define X128 X064,X064
#define X256 X128,X128

#define Y001 {X256,X128,X064,X032,X016,X008,X004,X002}
#define Y002 Y001,Y001
#define Y004 Y002,Y002
#define Y008 Y004,Y004
#define Y016 Y008,Y008
#define Y032 Y016,Y016
#define Y064 Y032,Y032
#define Y128 Y064,Y064
#define Y256 Y128,Y128
#define Y512 Y256,Y256

static const struct A a = X001;
static const struct B b = {{Y512,Y128,Y016,Y008,Y002}};

关于c - 如何静态初始化结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576014/

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