Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
напомните, как разобрать посимвольно параметры макроса #define ?
Отправлено
koyodza
05 июля 2008 г. 16:49
Цель: нужно короткую константную строку (4 символа) превратить в константу типа DWORD
Запись вида
return *((DWORD*)("1234"));
жрет на два десятка больше байт кода, чем
return 0x31323334UL;
Хочу состряпать макрос под это дело.
Или как это еще можно сделать
Составить ответ
|
Вернуться на конференцию
Ответы
☞ ☞ Главная дефекационная машина (MBedder) ☞ ☞
-
дристательныйAVR
(21.10.2008 12:29:59
85.21.155.153
,
пустое
,
картинка
)
Может с const и/или static поиграться?
—
Vit
(05.07.2008 22:34:31
77.123.173.98
,
пустое
)
Что-то типа того
—
Vit
(05.07.2008 22:52:15
77.123.173.98
, 162 байт)
Пишите сторку изначально в union. Вроде такого typedef union{ char str[4]; unsigned long dw} Кстати ''1234'' занимает 5 байт если счтать с нулем в конце.
—
F8
(05.07.2008 19:10:13
92.112.193.34
,
пустое
)
мне не надо ни строк, ни union. Мне надо получить КОНСТАНТУ
—
koyodza
(05.07.2008 19:20:13
77.123.64.94
,
пустое
)
Ну так что мешает рядом с определением строковой константы определить и lond? Ну и добавить коментарий, что изменив одну надо менять и другую. Оно может и не эстетично зато просто надежно и практично(C).
—
F8
(05.07.2008 19:52:58
92.112.193.34
,
пустое
)
да переводить эти строки в код вручную - ещё то удовольствие
—
koyodza
(05.07.2008 20:00:55
77.123.64.94
, 98 байт,
ссылка
)
зачем макрос?!, когда есть строковые стандартные функции типа atoi
—
kan
(05.07.2008 18:47:22
77.246.104.210
,
пустое
)
так нада
—
koyodza
(05.07.2008 19:18:43
77.123.64.94
, 1120 байт)
Ответ: А этот макрос (который 5) сколько байт занимает?
—
PaulS
(05.07.2008 19:40:53
83.239.162.78
,
пустое
)
нисколько, он преобразуется в константу сразу. Т.е. место занимает только константа
—
koyodza
(05.07.2008 19:48:1
77.123.64.94
, 322 байт)
Мдя... У меня кайло-51 только старое нашлось, 6,20. Удручающе. А вот GCC макрос (см. внутри) вполне понимает.
—
ReAl
(05.07.2008 19:37:12
89.162.152.53
, 478 байт)
работать-то вроде так работает, но вот что получается
—
koyodza
(05.07.2008 19:45:13
77.123.64.94
, 3931 байт)
А, ниже это уже было.... Кайло-51 для этого макроса 6,20 размещает строку в памяти и оттуда выбирает, прияём жутко толсто по коду. Дурное оно.
—
ReAl
(05.07.2008 19:39:56
89.162.152.53
,
пустое
)
Интересные у Вас индейцы, у меня "1234" получилось как 0х34333231 >>
—
VasilyS
(05.07.2008 17:42:52
80.92.96.25
, 316 байт)
у меня большие индейцы, всё ОК
—
koyodza
(05.07.2008 17:55:3
77.123.64.94
,
пустое
)
ты эта, логически и по порядку объясни чего хочешь.
—
политруккк
(05.07.2008 17:40:16
65.110.6.43
, 130 байт)
мне надо, чтобы macro(1234) вернул 0х31323334UL
—
koyodza
(05.07.2008 18:13:48
77.123.64.94
, 343 байт)
Может так? >>
—
VasilyS
(05.07.2008 18:24:7
80.92.96.25
, 392 байт)
что-то не работает :=(
—
koyodza
(05.07.2008 19:21:21
77.123.64.94
,
пустое
)
У меня под Monodevelop (linux) работает... К другим компилерам доступа сейчас не имею :-(
—
VasilyS
(05.07.2008 19:24:57
80.92.96.25
,
пустое
)
в МК51 + Кейл, запросто, а в др. случаях крутить надо или источник или результат
—
политруккк
(05.07.2008 18:23:28
65.110.6.43
, 91 байт)
да не про переворот речь. Надо напр строку "Yes " преобразовать в 0x59657320UL
—
koyodza
(05.07.2008 18:30:43
77.123.64.94
,
пустое
)
а посимвольно ни как не разберёшь, убогий Си этого не позволяет.
—
политруккк
(05.07.2008 17:49:50
65.110.6.43
,
пустое
)
Язык и должен ограничивать таких как ты, как клетка ограничивает обезъяну, а забор - свинью.. :-р
—
Dr.Alex
(05.07.2008 18:23:58
193.19.83.9
,
пустое
)
Язык его и так уже ограничил - куда еще :))
—
MBedder
(05.07.2008 18:50:1
80.92.96.19
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 12:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru