Пара непонятных моментов по языку СИ
Добавлено: Сб мар 09, 2013 23:25:47
Здравствуйте уважаемые форумчане. Разбираюсь как сделать меню на структурах:
http://www.avrfreaks.net/index.php?module=Freaks%20Files&func=viewFile&id=2178&showinfo=1
Есть пара непонятных моментов:
1 - в файле Menu.h есть строки такого вида:
#define PREVIOUS *((Menu_Item*)pgm_read_word(&CurrMenuItem->Previous))
что делает команда "->" ?
2 - ниже идет такая конструкция:
#define MAKE_MENU(Name, Next, Previous, Parent, Sibling, SelectFunc, EnterFunc, Text) \
extern Menu_Item Next; \
extern Menu_Item Previous; \
extern Menu_Item Parent; \
extern Menu_Item Sibling; \
Menu_Item Name = {(void*)&Next, (void*)&Previous, (void*)&Parent, (void*)&Sibling, (FuncPtr)SelectFunc, (FuncPtr)EnterFunc, { Text }}
в конце каждой строки символ "\". как этот символ организует эту конструкцию? он работает как то похоже на скобки {}? То есть я не пойму как работает вся конструкция #define MAKE_MENU
http://www.avrfreaks.net/index.php?module=Freaks%20Files&func=viewFile&id=2178&showinfo=1
Есть пара непонятных моментов:
1 - в файле Menu.h есть строки такого вида:
#define PREVIOUS *((Menu_Item*)pgm_read_word(&CurrMenuItem->Previous))
что делает команда "->" ?
2 - ниже идет такая конструкция:
#define MAKE_MENU(Name, Next, Previous, Parent, Sibling, SelectFunc, EnterFunc, Text) \
extern Menu_Item Next; \
extern Menu_Item Previous; \
extern Menu_Item Parent; \
extern Menu_Item Sibling; \
Menu_Item Name = {(void*)&Next, (void*)&Previous, (void*)&Parent, (void*)&Sibling, (FuncPtr)SelectFunc, (FuncPtr)EnterFunc, { Text }}
в конце каждой строки символ "\". как этот символ организует эту конструкцию? он работает как то похоже на скобки {}? То есть я не пойму как работает вся конструкция #define MAKE_MENU