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;
Run Code Online (Sandbox Code Playgroud)
我想b
用a的副本初始化.但是,我不能碰static const
的东西memcpy()
.我需要b
做到static const
这一点,因为这样它就会被闪存而不是内存.
我该如何做这项工作.我认为编译器正在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}};
Run Code Online (Sandbox Code Playgroud)