Думаю что моя проблема как-то связанна с особенностями работы компилятора.
CODE
char LCDLine[32];
struct TMI {
char* Name;
int* Num;
};
struct TMenu{
char Count;
TMI* Items;
};
#pragma constseg = DATA16_C
const int c1 = 1;
const int c2 = 2;
const TMI S1 = { "1111111", (int*)(&c1)};
const TMI S2 = { "1111112", (int*)(&c2)};
const TMI MenuItemsN1[] = { S1, S2 };
const TMenu Menu_1 = { 2, (TMI*)(&MenuItemsN1) };
#pragma constseg = default
int main( void ) {
char i, k;
for (i=0; i<Menu_1.Count; i++) {
StringCopy(LCDLine, (Menu_1.Items)[i].Name);
k++;
}
}
struct TMI {
char* Name;
int* Num;
};
struct TMenu{
char Count;
TMI* Items;
};
#pragma constseg = DATA16_C
const int c1 = 1;
const int c2 = 2;
const TMI S1 = { "1111111", (int*)(&c1)};
const TMI S2 = { "1111112", (int*)(&c2)};
const TMI MenuItemsN1[] = { S1, S2 };
const TMenu Menu_1 = { 2, (TMI*)(&MenuItemsN1) };
#pragma constseg = default
int main( void ) {
char i, k;
for (i=0; i<Menu_1.Count; i++) {
StringCopy(LCDLine, (Menu_1.Items)[i].Name);
k++;
}
}
IAR-ский компилятор размещает во флеш: c1, c2, s1, s2, Menu_1.
Но MenuItemsN1 упорно в ОЗУ.
Внимание вопрос!
Почему?
Заранее благодарен за помощь.