Начал переносить на целевую платформу в IAR.
Споткнулся на ровном месте. Хотелось бы решить "в лоб", так как по-другому очень большой кусок работы.
Помогите.
Есть объявление структуры:
Код
// хранится во флэши
typedef struct
{
int8_t *Index; // Указатель на редактируемый параметр/ смещение для каналов
uint16_t Number; // Число пунктов
uint16_t Ch; // 0/ Указатель на канал
uint8_t *ItemName[]; // Указатели на имена пунктов
} RadioBtn_t;
typedef struct
{
int8_t *Index; // Указатель на редактируемый параметр/ смещение для каналов
uint16_t Number; // Число пунктов
uint16_t Ch; // 0/ Указатель на канал
uint8_t *ItemName[]; // Указатели на имена пунктов
} RadioBtn_t;
Есть строки:
Код
uint8_t const sFlowControlComport[3][9] = {"None","Hard","Xon/Xoff"};
Есть объявление:
Код
//***************************************************************
// @@ 1312. Управление потоком
RadioBtn_t rbtFlowControl =
{
0, // Указатель на редактируемое значение
3, // Всего 3 пункта,
((uint32_t)&ComSetting[0].flowcontrol- (uint32_t)ComSetting), // flowcontrol
{sFlowControlComport[NONE], sFlowControlComport[HARD], sFlowControlComport[SOFT]}
};
// @@ 1312. Управление потоком
RadioBtn_t rbtFlowControl =
{
0, // Указатель на редактируемое значение
3, // Всего 3 пункта,
((uint32_t)&ComSetting[0].flowcontrol- (uint32_t)ComSetting), // flowcontrol
{sFlowControlComport[NONE], sFlowControlComport[HARD], sFlowControlComport[SOFT]}
};
Qt компилирует правильно и никаких вопросов у него это не вызывает
У IAR ARM 6.4.02 возникает 2 ошибки
1 - в строке 4 структуры у него претензия, что это не константа, но на самом деле это смещение адресов и должно вычислятся на этапе компиляции. Не вижу здесь проблемы и QT тоже не видит. Как это объяснить IAR?
2 - IAR в строке 5 пишет: слишком много параметров инициализации. Честно говоря, тоже не вижу проблемы.
Понятно что я могу указать лишь только имя масива и смещаться на длину элемента, но здесь я привожу только частный случай. Есть места, где это разные строки произвольной длины, так что такой метод не предлагать. Хотелось бы поэкономить место. Не хотелось бы также создавать отдельный масив указателей - тоже + 4 байта на один радиобутон. Поскольку элементов очень много, то будет набегать. Ну и QT почемуто понимает меня и работает как нужно. Поэтому непонятно ...
Какие будут предложения?
Заранее благодарю всех откликнувшихся ...