Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: препроцессор Keil'а
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
abcdefg
есть набор функций с именами по шаблоны func_N (N-целое)
для хорошей читаемости и быстрой коррекции написал макрос типа:

#define Func(DevNum) func_##DevNum(), который при подстановке цифр преобразует к виду func_1, func_2 и т.д.
Всё хорошо, пока в параметр не подставляется еще один макрос, например:

#define EXT_DEVICE 1
.............
int main()
{

Func(EXT_DEVICE);
}

препроцессор преобразует строку в func_EXT_DEVICE, на что и ругается компилятор.

Как сделать такой макрос, который по параметру вызывал бы нужную функцию?
Dimchansky
Цитата(abcdefg @ Jun 6 2006, 14:26) *
Всё хорошо, пока в параметр не подставляется еще один макрос, например:

#define EXT_DEVICE 1
.............
int main()
{

Func(EXT_DEVICE);
}

препроцессор преобразует строку в func_EXT_DEVICE, на что и ругается компилятор.

Как сделать такой макрос, который по параметру вызывал бы нужную функцию?

#define EXT_DEVICE (1)
zltigo
Цитата(Dimchansky @ Jun 6 2006, 16:37) *
#define EXT_DEVICE (1)

:-) Там ЯВНАЯ операция со СТРОКАМИ, посему с дефинициями EXT_DEVICE можно не пытаться извращаться.

Можно так:

#define EXT_DEVICE 1
#define Func(DevNum) X_Func(DevNum)
#define X_Func(DevNum) Func_##DevNum()
abcdefg
Цитата(zltigo @ Jun 6 2006, 17:53) *
Можно так:

#define EXT_DEVICE 1
#define Func(DevNum) X_Func(DevNum)
#define X_Func(DevNum) Func_##DevNum()



Заработало!!! спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.