реклама на сайте
подробности

 
 
> Макрос с определением типа параметра
Alexey111
сообщение Dec 14 2005, 11:52
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 15-02-05
Из: Kiev
Пользователь №: 2 650



Задача такова:
необходимо написать макрос, который в случае его запуска с константой в качестве параметра выполняет одно действие, а в случае передачи ему переменной другое.

Смысл этого в следующем: необходимо умножить число на константу. Константа заранее известна(1000). Число может быть заданной константой(тогда это выражение надо подсчитать на этапе компиляции), или переменной(тогда необходимо вызвать ф-у умножения числа на константу).

Вызов ф-ции стоит дешевле, чем умножение двух чисел.
Все это нужно для экономии места во флеше, борьба за каждый байт!

P.S Язык "Ansi С"
Процессор специализированный, т.е не ARM
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex03
сообщение Dec 14 2005, 21:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



В GCC бывает семейство builtin* функций, и тогда возможно такое (из их примера):
#define Scale_Value(X) \
(__builtin_constant_p (X) \
? ((X) * SCALE + OFFSET) : Scale (X))

В С++ возможно прокатило бы 2 перегруженные inlune функции с одним именем, у одной параметр const у другой нет.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 18:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016