Go Down

Topic: Static initialization of PGM_P in struct (Read 1 time) previous topic - next topic

SukkoPera

Suppose I have a struct like:

Code: [Select]
struct SomeStruct {
PGM_P name;
// Other fields...
};



I would like to write:

Code: [Select]
SomeStruct s[] = {
{PSTR ("One")},
{PSTR ("Two")}
};



Unfortunately the compiler refuses to compile this. I can work it around with something like:

Code: [Select]
const char oneStr[] PROGMEM = "One";

SomeStruct s[] = {
{oneStr},
// ...
};


But it's a bit too complicated for my taste. Is there a way to put the strings inside the array declaration?

Thanks in advance!

GoForSmoke

I think that you should make the struct definition normally then put the array of structs into progmem with a progmem pointer to the array. Then structs and members can be addressed as offsets to the pointer in the normal manner.

I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

WizenedEE

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_rom_array

SukkoPera

#3
Jul 30, 2012, 09:34 am Last Edit: Jul 30, 2012, 09:36 am by SukkoPera Reason: 1
OK, it seems there is no other way :(. Thanks WizenedEE.

Go Up