Просто там явные проблемы с синтаксисом. Вот это: typedef struct { char Name; char Type_Item; char Prev; char Next; void (*Show_Proc) (); void (*Show_Edit_Proc) (); void (*Menu_Read) (); void (*Menu_Write) (); char Min_Value; char Max_Value; char Step_Value;
}Menu_Item;
уже создает экземпляр структуры Menu_Item с выделением под него памяти.
А это (можно даже без typedef):
typedef struct MENU_ITEM { char Name; char Type_Item; char Prev; char Next; void (*Show_Proc) (); void (*Show_Edit_Proc) (); void (*Menu_Read) (); void (*Menu_Write) (); char Min_Value; char Max_Value; char Step_Value; }; - только объявление структуры. Оно позволяет создавать экземпляры (переменные, константы) типа MENU_ITEM: struct MENU_ITEM MyMenu; //это переменная const struct MENU_ITEM MyMenuArray[]={...}; //а это константа. В IAR,например, она по умолчанию разместится в памяти программ, поскольку использовано кл. слово "const" А что касается WinAVR: //-------------------------------- #include <avr/pgmspace.h> //-------------------------------- typedef struct MENU_ITEM { char Name; char Type_Item; char Prev; char Next; void (*Show_Proc) (); void (*Show_Edit_Proc) (); void (*Menu_Read) (); void (*Menu_Write) (); char Min_Value; char Max_Value; char Step_Value; }; //------------------------------------------ struct MENU_ITEM MyMenuArray[] PROGMEM={...};
Сообщение отредактировал Dimmy - Jul 5 2007, 10:53
|