Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Балин, а есть в Си какой-нить способ узнать адрес метки внутри функции? Передать этот адрес как параметр функции, записать в переменную? (+)
Отправлено
Mebius
(87.251.142.11)
27 марта 2010, г. 13:47
Что-то кейл не может понять в теле макроса директивы #pragma asm
А каждый раз копировать асм вставки... :(
Составить ответ
|
Вернуться на конференцию
Ответы
Не должно в си метки использовать. Без goto все решается там хорошо. Возможно, механизм косвенного вызова функция вас спасет.
-
mandigit
(27.03.2010, 16:49:53
83.237.251.205
,
пустое
)
Вот для него, этого механизма родного и стараюсь :)
-
Mebius
(27.03.2010, 17:07:42
87.251.142.11
,
пустое
)
Наверное, массив функций и вызов функции по индексу вас чем-то не устраивает?
-
mandigit
(27.03.2010, 19:09:54
83.237.251.205
,
пустое
)
Тоже вариант, но что-то мне уже кажется что свитч будет компактнее :)
-
Mebius
(27.03.2010, 20:16:40
87.251.142.11
,
пустое
)
Switch очень неплохой код генерит, ручной свитч (переход по меткам) плохо совместим с компилятором, откровенно нарушает идею оптимизации. Если пишите на СИ - важно придерживаться некоторых стандартов, иначе снижается качество кода.
-
mandigit
(27.03.2010, 20:26:53
83.237.251.205
,
пустое
)
Есть такая полезность __LINE__ - возвращает номер строки. Может быть использована как константа в case
-
Vit
(27.03.2010, 14:39:59
77.123.111.139
, 462 байт,
ссылка
)
Да, интересно. Я именно что-то вроде protothreads и сочиняю :) Но я хотел уйти от свичей...
-
Mebius
(27.03.2010, 15:16:35
87.251.142.11
,
пустое
)
на goto?
-
Vit
(27.03.2010, 15:25:11
77.123.111.139
,
пустое
)
На вызов по указателю. Метка служила бы как указатель на функцию.
-
Mebius
(27.03.2010, 15:58:37
87.251.142.11
,
пустое
)
Прям внутрь функции прыгнуть а ее начало (и самое главное ее пролог) пропустить? Это не хорошо.
-
VasilyS
(27.03.2010, 16:34:1
80.92.96.25
,
пустое
)
Я обязуюсь сам следить чтобы пролога не было. Обещаю что прыгать буду только в void func(void) :)
-
Mebius
(27.03.2010, 17:06:51
87.251.142.11
,
пустое
)
Вот как? И очень надо? >>
-
VasilyS
(27.03.2010, 17:43:25
80.92.96.25
, 272 байт)
Что за интриги? Хочешь - давай, не хочешь - не давай. Варианты решений уже есть. В крайнем случае вернусь к свичу дополнив кое-чего в макросах Адама.
-
Mebius
(27.03.2010, 18:06:8
87.251.142.11
,
пустое
)
Интриги? Против кого? Просто спросил очень ли надо и готов ли поковыряться с переводом из ИАРа на Кейл. Из ответа понял что не очень-то и надо, уже есть альтернатива. Удачи.
-
VasilyS
(27.03.2010, 18:14:53
80.92.96.25
,
пустое
)
Скорее хочет использовать значение указателя в качестве метки. Компиляторы пока упираются;)
-
Vit
(27.03.2010, 16:43:47
77.123.111.139
,
пустое
)
Наоборот, метку как указатель. Кстати, GCC уже вроде как сдался :)
-
Mebius
(27.03.2010, 17:08:45
87.251.142.11
,
пустое
,
ссылка
)
И правильно урпираются :) Вся оптимизация кода с этими принудительными метками в разнос пойдёт.
-
Макаров
(27.03.2010, 16:53:58
95.107.66.208
,
пустое
)
Непонятно (этож С, а не ASM) Метки чего? В сысле-переменная гиперссылок? Switch|Case справляется с этим.
-
Макаров
(27.03.2010, 13:54:18
95.107.66.208
,
пустое
)
Да понятно.. Вот от этих свич и хочется избавится. Загромождает слишком :(
-
Mebius
(27.03.2010, 14:01:5
87.251.142.11
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru