Hi everyone,
I have the following working code:
typedef struct { int spam; int eggs; char padding[200]; } MyStruct; const char code foo[] = "This is a string."; const MyStruct code bar = { 1, 2 }; // padding not initialized
Because MyStruct includes padding that is currently unused, I would like to move the contents of foo into the structure. Within my application, this makes logical sense in addition to reducing the amount of wasted code space. I would like to do something like the following, but I can't get it to work:
typedef struct { int spam; int eggs; char foo[18]; // includes \0 at end char padding[182]; } MyStruct; const char code bar = { 1, 2, "This is a string." };
I am getting the error "non-address/constant initializer". Any suggestions?
-Scott
Is the issue it won't compile, or doesn't get init.
This compiles for me?
typedef struct { int spam; int eggs; char foo[18]; // includes \0 at end char padding[182]; } MyStruct; const MyStruct bar = { 1, 2, "This is a string." };
I could not get this to compile using the 9.x series of the Keil tool chain. Programmatically we have since reverted to v8.12, under which the (unmodified) source compiles just fine. I did not investigate further.