|
Использование макросов с аргументами в Си |
|
|
|
Nov 28 2013, 07:32
|

Местный
  
Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658

|
Для удобства работы с портами ввода/вывода (на STM32 в Keil) написал небольшой хидер, приведу его часть : Код #define SbitP(Port,Nbit) GPIO##Port->BSRR=GPIO_BSRR_BS##Nbit #define RbitP(Port,Nbit) GPIO##Port->BSRR=GPIO_BSRR_BR##Nbit #define SmbitP(Port,mask) GPIO##Port->BSRR=(mask) #define RmbitP(Port,mask) GPIO##Port->BSRR=(mask)<<16 в программе использую следующие варианты включения макросов: Код #define LCD_dataShift 1
void LCD_wrAdr (u8 Adr) { SmbitP(A,((Adr&0x0f)<<LCD_dataShift)); // выставляем на шину адрес RbitP(A,7); // вкл. на запись адреса A0=0 SbitP(A,5); // вкл.строба записи delay(2000);// Задержка ~ 100нс RbitP(A,5); // снимаем строб записи RmbitP(A,(0x0f<<LCD_dataShift)); // Сброс битов шины DBх delay(5000);// Задержка ~ 200нс } У меня вопрос: на сколько корректно такое применение макросов ? т.к. в случае с RbitP(A,7) в макрос подставляется символ , который при обединение с остальным текстом сам является библиотечным макросом. Т.е. до каких пор происходит раскрытие макроса ?
|
|
|
|
|
 |
Ответов
|
Dec 2 2013, 08:24
|

Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189

|
Я не придраться  Просто уже и раньше кое-где встречал наподобие Код void func(const int x) { .... } Например, в исходниках scmRTOS. Теперь вот и у Паши (уважаемого, надо сказать, человека  ). Вот я и спрашиваю... Вдруг в этом есть какой-то глубокий смысл, а я и не в курсе...
|
|
|
|
Сообщений в этой теме
MaxiMuz Использование макросов с аргументами в Си Nov 28 2013, 07:32 Tarbal Бегло посмотрел. Вроде все нормально.
Макросы тупо... Nov 28 2013, 13:15 SSerge Цитата(MaxiMuz @ Nov 28 2013, 14:32) Т.е.... Nov 29 2013, 06:54 MrYuran Не совсем понятен смысл таких макросов.
Если абстр... Nov 29 2013, 11:48 demiurg_spb Цитата(MrYuran @ Nov 29 2013, 15:48) +1 Nov 29 2013, 12:12 MaxiMuz Цитата(MrYuran @ Nov 29 2013, 14:48) Не с... Nov 29 2013, 12:29  demiurg_spb Цитата(MaxiMuz @ Nov 29 2013, 16:29)
Вы ... Nov 29 2013, 12:52       ViKo Цитата(winipuh @ Dec 2 2013, 12:50) Шутит... Dec 2 2013, 10:13    demiurg_spb Цитата(_Pasha @ Dec 2 2013, 10:29) Это не... Dec 2 2013, 11:53 MaxiMuz Цитата(_Pasha @ Nov 29 2013, 21:19) Я обы... Dec 2 2013, 12:14  winipuh Цитата(MaxiMuz @ Dec 2 2013, 16:14) по по... Dec 2 2013, 12:34   MaxiMuz Цитата(winipuh @ Dec 2 2013, 15:34) Да? ... Dec 2 2013, 19:09    winipuh Цитата(MaxiMuz @ Dec 2 2013, 23:09) но ко... Dec 2 2013, 20:00     MaxiMuz Цитата(winipuh @ Dec 2 2013, 23:00) А так... Dec 3 2013, 04:30      winipuh Цитата(MaxiMuz @ Dec 3 2013, 08:30) Код#d... Dec 3 2013, 12:23       MaxiMuz Цитата(winipuh @ Dec 3 2013, 15:23) Имеем... Dec 11 2013, 07:36        Сергей Борщ Цитата(MaxiMuz @ Dec 11 2013, 09:36) Един... Dec 11 2013, 08:02 dxp QUOTE (winipuh @ Dec 1 2013, 22:37) А зач... Dec 3 2013, 04:24 ViKo Не понимаю, зачем такие "муки творчества... Dec 11 2013, 08:23 Сергей Борщ Цитата(ViKo @ Dec 11 2013, 10:23) Не пони... Dec 11 2013, 09:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|