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

 
 
> Макрос с определением типа параметра
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
Ответов
Alexey111
сообщение Jan 20 2006, 09:27
Сообщение #2


Участник
*

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



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

В С++ возможно прокатило бы 2 перегруженные inlune функции с одним именем, у одной параметр const у другой нет.


Не поверил документации на компилятор - проверил. Работает!

Спасибо.

Вообще этот самопальный компилятор протирован с GCC 2.6 или 2.9(точной информации нет) и документация неполная.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th August 2025 - 04:38
Рейтинг@Mail.ru


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