Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
Keil C: function pointers array
- 02-18-2004
- Yiuri Kruchkov
February 18, 2004, 4:33 pm

Hello, All!
Помогите начинающему.
Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int i); для
одиночного указателя), мне ничего лучшего, чем
void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
в голову не пришло... Hу, в общем, хотелось объявить и инициализировать массив
указателей на функции MS0, MS1, чтобы потом использовать его в меню-сёрфинге.
Как ни переставлял скобочки :), от ругательств компилера не избавился.
Пока решил проблемку горбато: создал вектор адресов и потом кастомизировал его
элементы в указатели на функции нужного типа. Hо некузяво как-то.
MenuNode = ((uchar (code *)(uchar)) MenuGuide[MenuNode]) (MenuNode);
ЗЫ. Кейл Ц 6.01.
ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения вариантов
построения меню на эхотаге. Пропустил, как обычно бывает, думал "не
пригодится". Был бы рад, если б некий доброжелатель отмылил мне этот тред.
С уважением,
Юрий Крючков aka Юрий Юрьевич.
Помогите начинающему.
Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int i); для
одиночного указателя), мне ничего лучшего, чем
void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
в голову не пришло... Hу, в общем, хотелось объявить и инициализировать массив
указателей на функции MS0, MS1, чтобы потом использовать его в меню-сёрфинге.
Как ни переставлял скобочки :), от ругательств компилера не избавился.
Пока решил проблемку горбато: создал вектор адресов и потом кастомизировал его
элементы в указатели на функции нужного типа. Hо некузяво как-то.
MenuNode = ((uchar (code *)(uchar)) MenuGuide[MenuNode]) (MenuNode);
ЗЫ. Кейл Ц 6.01.
ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения вариантов
построения меню на эхотаге. Пропустил, как обычно бывает, думал "не
пригодится". Был бы рад, если б некий доброжелатель отмылил мне этот тред.
С уважением,
Юрий Крючков aka Юрий Юрьевич.

Re: Keil C: function pointers array
Hello Yiuri,
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int i); для
YK> одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло... Hу, в общем, хотелось объявить и инициализировать
массив
YK> указателей на функции MS0, MS1, чтобы потом использовать его в меню-сёрфинге.
YK> Как ни переставлял скобочки :), от ругательств компилера не избавился.
typedef void (code * MENU_FUNC_T)(char pre);
void MS0 (char pre)
{
pre = pre;
}
void MS1 (char pre)
{
pre = pre;
}
code const MENU_FUNC_T MenuArray[] = {MS0, MS1};
И лучше 6.01 не используй, глюки там.
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int i); для
YK> одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло... Hу, в общем, хотелось объявить и инициализировать
массив
YK> указателей на функции MS0, MS1, чтобы потом использовать его в меню-сёрфинге.
YK> Как ни переставлял скобочки :), от ругательств компилера не избавился.
typedef void (code * MENU_FUNC_T)(char pre);
void MS0 (char pre)
{
pre = pre;
}
void MS1 (char pre)
{
pre = pre;
}
code const MENU_FUNC_T MenuArray[] = {MS0, MS1};
И лучше 6.01 не используй, глюки там.
--
С уважением,
Andy
С уважением,
Andy
We've slightly trimmed the long signature. Click to see the full one.

Keil C: function pointers array
Привет Yiuri!
18 Feb 04 19:33, Yiuri Kruchkov писал All:
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int
YK> i); для одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло... Hу, в общем, хотелось объявить и
YK> инициализировать массив указателей на функции MS0, MS1, чтобы потом
YK> использовать его в меню-сёрфинге.
Hе надо стараться запихнуть кучу определений в одно выражение - сам
запутаешься и другие ничего не поймут. Определяй типы постепенно от простого к
сложным. Hапример так:
typedef void MenuItem(int);
void item1(int);
void item2(int);
void item3(int);
void item4(int);
MenuItem* MenuGuide[] = { item1, item2, item3, item4 };
Hе правда ли, так гораздо прозрачнее и понятнее?
YK> ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения
YK> вариантов построения меню на эхотаге. Пропустил, как обычно бывает,
YK> думал "не пригодится". Был бы рад, если б некий доброжелатель отмылил
YK> мне этот тред.
Искать лень, могу выслать эту эху за последние год-два в JAM. Если надо,
пиши на alx-собачка-intellectronika.ru
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... Старый глюк лучше новых двух...
18 Feb 04 19:33, Yiuri Kruchkov писал All:
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int
YK> i); для одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло... Hу, в общем, хотелось объявить и
YK> инициализировать массив указателей на функции MS0, MS1, чтобы потом
YK> использовать его в меню-сёрфинге.
Hе надо стараться запихнуть кучу определений в одно выражение - сам
запутаешься и другие ничего не поймут. Определяй типы постепенно от простого к
сложным. Hапример так:
typedef void MenuItem(int);
void item1(int);
void item2(int);
void item3(int);
void item4(int);
MenuItem* MenuGuide[] = { item1, item2, item3, item4 };
Hе правда ли, так гораздо прозрачнее и понятнее?
YK> ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения
YK> вариантов построения меню на эхотаге. Пропустил, как обычно бывает,
YK> думал "не пригодится". Был бы рад, если б некий доброжелатель отмылил
YK> мне этот тред.
Искать лень, могу выслать эту эху за последние год-два в JAM. Если надо,
пиши на alx-собачка-intellectronika.ru
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... Старый глюк лучше новых двух...

Keil C: function pointers array
Hello Yiuri.
18 Feb 04 19:33, you wrote to all:
YK> Помогите начинающему.
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int
YK> i); для одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло...
Лучшее тут уже подсказали (через typedef), а оригинал должен был выглядеть так:
void (*MenuGuide[])(uchar pre) =;
Roman
18 Feb 04 19:33, you wrote to all:
YK> Помогите начинающему.
YK> Как объявить сабж? Если следовать рекомендации мануала (void (*f)(int
YK> i); для одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
YK> в голову не пришло...
Лучшее тут уже подсказали (через typedef), а оригинал должен был выглядеть так:
void (*MenuGuide[])(uchar pre) =;
Roman

Re: Keil C: function pointers array
Hемедленно нажми на RESET, Yiuri Kruchkov!
YK> Помогите начинающему.
Есть такие замечательные программы: cdecl и cundecl. Должны входит в
комплект, вместе с собственно компилятором (cc), а также с cflow.
Последняя строит граф вызовов функций, использования переменных.
А эти две переводят объявления на языке C на английский язык, и
наоборот. Иногда очень полезно бывает...
YK> Как объявить сабж?
Для этого надо мысль выражать яснее... хотя бы на естесственном языке.
Рискну предположить, что имеется ввиду массив указателей на функции:
sysop@pc:sysop$ cundecl
declare x as array of pointer to function that expects (int) returning void;
void (*x[])(int);
YK> Если следовать рекомендации мануала (void (*f)(int i); для
YK> одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
А так получается:
declare MenuGuide as pointer to function that expects (uchar) returning
array of void;
Всё совсем не так...
YK> в голову не пришло... Hу, в общем, хотелось объявить и инициализировать
YK> массив
YK> указателей на функции MS0, MS1, чтобы потом использовать его в
YK> меню-сёрфинге.
Эхотаг на оффтопике! void (*MenuGuide[])(char) = {MS0, MS1};
YK> ЗЫ. Кейл Ц 6.01.
Да хоть GCC 5.0! Какая разница?
YK> ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения вариантов
YK> построения меню на эхотаге. Пропустил, как обычно бывает, думал "не
YK> пригодится". Был бы рад, если б некий доброжелатель отмылил мне этот тред.
google никто не отменял.
YK> Помогите начинающему.
Есть такие замечательные программы: cdecl и cundecl. Должны входит в
комплект, вместе с собственно компилятором (cc), а также с cflow.
Последняя строит граф вызовов функций, использования переменных.
А эти две переводят объявления на языке C на английский язык, и
наоборот. Иногда очень полезно бывает...
YK> Как объявить сабж?
Для этого надо мысль выражать яснее... хотя бы на естесственном языке.
Рискну предположить, что имеется ввиду массив указателей на функции:
sysop@pc:sysop$ cundecl
declare x as array of pointer to function that expects (int) returning void;
void (*x[])(int);
YK> Если следовать рекомендации мануала (void (*f)(int i); для
YK> одиночного указателя), мне ничего лучшего, чем
YK> void (*MenuGuide)(uchar pre)[] = {(uchar *)MS0, (uchar *)MS1};
А так получается:
declare MenuGuide as pointer to function that expects (uchar) returning
array of void;
Всё совсем не так...
YK> в голову не пришло... Hу, в общем, хотелось объявить и инициализировать
YK> массив
YK> указателей на функции MS0, MS1, чтобы потом использовать его в
YK> меню-сёрфинге.
Эхотаг на оффтопике! void (*MenuGuide[])(char) = {MS0, MS1};
YK> ЗЫ. Кейл Ц 6.01.
Да хоть GCC 5.0! Какая разница?
YK> ЗЗЫ. Краем уха видел в эхе (с месяцок тому) какие-то обсуждения вариантов
YK> построения меню на эхотаге. Пропустил, как обычно бывает, думал "не
YK> пригодится". Был бы рад, если б некий доброжелатель отмылил мне этот тред.
google никто не отменял.
Site Timeline
- » Вопрос по BGA-272 с шагом 0.8мм
- — Next thread in » Microcontrollers (Russian)
-
- » Сеть сбора данных
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Atlas of Upper Gastrointestinal and Hepato Surgery 2nd Ed by CLAVIEN
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » adaptateur flash photo ?
- — The site's Last Updated Thread. Posted in » Electronics (French)
-