Storing data in flash, but defining it inline

Is it possible to store character arrays inline and point to them using a struct initialiser list?
Something similar to this (but functional):

//global namespace, not in a function.

struct Labels {
  const char* descriptiveLabel;
  const char* anotherDescriptiveLabel;
};

Labels myLabels = {
  .descriptiveLabel = PSTR("Label text defined inline"),
  .anotherDescriptiveLabel = PSTR("Another label")
};

Currently fails with: statement-expressions are not allowed outside functions nor in template-argument lists
And .descriptiveLabel PROGMEM = fails with: expected primary-expression before '.' token

I want to avoid having to reference it twice, like the following:

//global namespace, not in a function.

struct Labels {
  const char* descriptiveLabel;
  const char* anotherDescriptiveLabel;
};

const char temp1 PROGMEM = "Label text defined inline";
const char temp2 PROGMEM = "Another label";

Labels myLabels = {
  .descriptiveLabel = temp1,
  .anotherDescriptiveLabel = temp2
};

I know that the myLabels variable and pointers to the character arrays will be in RAM, but I'm okay with that.

mattb5906:

Labels myLabels = {

.descriptiveLabel = PSTR("Label text defined inline"),
 .anotherDescriptiveLabel = PSTR("Another label")
};

I've never seen that done before. Are you sure you can initialize fields of a structure by name?

I would try this just to see if it works:

Labels myLabels = {
  PSTR("Label text defined inline"),
  PSTR("Another label")
};

Thanks John. I'll give that a try.

It's the old (arguably better) C stlye named initialiser list. It's not C++ compliant, but the GCC compiler allows it I believe.