Если длину строк задавать явно и если не страшно, что каждая подстрока будет заканчиваться терминатором \0, то нет проблем.В любом случае как пример. ИАР АВР.
static char x = 0x45; // дам x и y определенные значения для удобства поиска в дампе
static char y = 0x67;
typedef struct
{
char str1[5];
unsigned int adr_x;
char str2[7];
unsigned int adr_y;
}qwe_t;
// Содержимое строк для наглядности числовое. Разделитель - \0, он же и терминатор строк.
const __farflash qwe_t qwe = {
"123=",
(unsigned int)&x,
"45678=",
(unsigned int)&y
};
void main(void)
{
printf("%04x\n", &qwe); // выведем адрес структуры во flash
printf("%04x\n", qwe.adr_x); // для удобства выведу адрес SRAM x
printf("%04x\n", qwe.adr_y); // для удобства выведу адрес SRAM у
// напечатало:
// 0794
// 0306
// 0307
// Проверка в дебаггере:
// 1. Адрес структуры во flash дало 0794
// значит, ищем что во флеши по этому адресу:
// 31 32 33 3D 00 06 03 34 35 36 37 38 3D 00 07 03
// Вроде все легло друг за дружкой. Замечательно!
// 2. смотрим что же лежит в SRAM по адресам 0306 0307
// 0306 45 да, это x
// 0307 67 да, это y
}