Здравствуйте. Что-то я совсем запутался со связанными константными структурами в Си. Ведь они должны быть определены при их инициализации, но так как они связаны между собой, компилятор начинает ругаться.
Файл Menu.c
Код:
#include <avr/pgmspace.h>
#include <stdlib.h>
#include "Menu.h"
const char PROGMEM main_menu_text[]={0xA1, 0xBB, 0x61, 0xB3, 0xBD, 0x6F, 0x65, 0x80, 0xBC, 0x65, 0xBD, 0xC6}; //Главное меню
const char PROGMEM time_set_text[]={0x48, 0x61, 0x63, 0xBF, 0x70, 0x6F, 0xB9, 0xBA, 0x61, 0x80, 0xB3, 0x70, 0x65, 0xBC, 0x65, 0xBD, 0xB8}; //Настройка времени
const char PROGMEM bright_set_text[]={0x48, 0x61, 0x63, 0xBF, 0x70, 0x6F, 0xB9, 0xBA, 0x61, 0x80, 0xC7, 0x70, 0xBA, 0x6F, 0x63, 0xBF, 0xB8}; //Настройка яркости
const MenuStruct main_menu={main_menu_text,NULL,NULL,time_set,NULL};
const MenuStruct time_set={time_set_text,NULL,NULL,bright_set,main_menu};
const MenuStruct bright_set={bright_set_text,NULL,NULL,NULL,time_set};
MenuStruct* curr_menu;
Файл Menu.h
Код:
#ifndef MENU_H_
#define MENU_H_
#include <avr/pgmspace.h>
typedef struct PROGMEM
{
const char* menu_name;
void* const parent;
void* const child;
void* const next;
void* const prev;
} MenuStruct;
void Menu_Init(void);
void Menu_LCD_FSM (void);
void Menu_KeyBoard_Handler (void);
#endif /* MENU_H_ */
Компилятор выдаёт ошибки:
- 'time_set' undeclared here (not in a function)
- 'bright_set' undeclared here (not in a function)
- initializer element is not constant
- (near initialization for 'time_set.prev')
- initializer element is not constant
- (near initialization for 'bright_set.prev')
Помогите чем сможете. Заранее спасибо.