나는 C로 쓰고있다.Const 자체 참조 구조
자기 참조 구조로 만들어진 새로운 유형 (noFunc_menuEntry)을 정의했다.
struct noFunc_menuEntry_tag {
const char *text;
struct noFunc_menuEntry_tag *up_entry;
struct noFunc_menuEntry_tag *down_entry;
struct noFunc_menuEntry_tag *back_entry;
struct noFunc_menuEntry_tag *enter_entry;
};
typedef struct noFunc_menuEntry_tag noFunc_menuEntry;
나는이 같은 변수의 시리즈를 정의해야 등등
menuEntry_1 = {title_1, &menuEntry_2, &menuEntry_4, &menuEntry_1, &menuEntry_5};
menuEntry_2 = {title_2, &menuEntry_3, &menuEntry_1, &menuEntry_1, &menuEntry_6};
하고 있습니다.
그래서 모든 변수가 다른 변수에 의존하기 때문에 변수의 선언과 분리를 구분해야합니다. 에 대한 등등
void menu_init(void)
{
menuEntry_1.text = title;
menuEntry_1.up_entry = &menuEntry_2
}
과 : 헤더 파일에서 내가 선언
noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
등 ... 및 기능에서이 .c 파일에 내가 초기화 한 변수를 작성했습니다 다른 회원 및 변수.
그러나 난 내 변수 const
할 것을 권장합니다
const noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
그래서 제 질문은 선언과 내가 정의한 유형의 const
변수의 정의를 separing에 관한 것입니다. 어떻게해야합니까? 내가 뭐 잘못하고 있니?
자연스럽게 선언문에 const
을 추가하면 변수를 초기화 할 때 컴파일러에서 오류를보고합니다 (읽기 전용 변수를 쓰려고합니다).
에 정의를 진행 {TITLE_1을, menuEntry_2는, menuEntry_4는, menuEntry_1, menuEntry_5}', 왜 menu_init''에서 다시 초기화 것인가? – user694733
구조체에 이러한 전역 변수에 대한 포인터가 * 포함되어 있으므로 간단하게 정의하고 한 줄로 초기화 할 수 있어야합니다. 즉 초기화 할 함수가 필요하지 않습니다.* "모든 변수는 다른 변수에 의존합니다"*, 그러나 'menuEntry_1'내용을 변경하면 '& menuEntry_1'이 변경되는 것은 아닙니다. – Groo
@ user694733 :'const '로 사용하지 않으면'menu_init'에서 변수를 초기화합니다. 그러나'const' 일 필요가 있으면 자연스럽게'menu_init'을 사용하지 않습니다. 나는 그것을 할 올바른 방법을 찾고있었습니다! – BzFr