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

 
 
> Макросы в C
amost
сообщение Jan 24 2010, 12:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



что-то запутался я со вложенными макросами. например есть макрос

Код
#define M_SCAN_INPUT(port, pin, pos, loc)    \
            loc |= ( ((port >> pin) & 0x01) << pos)

теперь хочу значения port, pin, pos спрятать еще в один дефайн :

Код
#define INPUT1    PORTD,2,0

что-бы в конечном итоге вызвать макрос таким образом :

Код
M_SCAN_INPUT(INPUT1, pin_state_cur);

как по мне то должно работать. выдает эррор несоответствия количества аргументов при вызове макроса.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amost
сообщение Jan 24 2010, 13:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



спасибо. сделал так :
Код
#define INPUT1    PORTD,2,0
#define INPUT2    PORTD,3,1
#define INPUT3    PORTD,4,2
#define INPUT4    PORTD,5,3

#define _M_SCAN_INPUT(port, pin, pos, loc)    \
        loc |= ( ((port >> pin) & 0x01) << pos)

#define M_SCAN_INPUT(INPUT, loc) _M_SCAN_INPUT(INPUT, loc)

вызываю
Код
M_SCAN_INPUT(INPUT1, pin_state_cur);
M_SCAN_INPUT(INPUT2, pin_state_cur);
M_SCAN_INPUT(INPUT3, pin_state_cur);
M_SCAN_INPUT(INPUT4, pin_state_cur);
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:13
Рейтинг@Mail.ru


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