|
Сложная автозамена через #define |
|
|
|
Dec 9 2015, 08:59
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634

|
Пример: сейчас Код // Запись значений по указателям *pTIMER7_PERIOD = 0x0000FFFF; *pTIMER7_WIDTH = 0x00007FFF; Как сделать такую запись через всего 1 дефайн? Т.к. текст TIMER7 есть во всех именах регистров, то, наверно, их можно заменить одним дефайном? Код #define BKLT_TIMER TIMER7
*pBKLT_TIMER_PERIOD = 0x0000FFFF; *pBKLT_TIMER_WIDTH = 0x00007FFF; и т.д. Что нужно дополнительно сделать, чтобы такая замена работала?
|
|
|
|
|
 |
Ответов
|
Apr 29 2016, 03:17
|
Частый гость
 
Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364

|
Цитата(GetSmart @ Apr 28 2016, 21:28)  В продолжение темы. В исходниках V-USB часто встречаются макросы (дефайны) с одинаковыми именами/идентификаторами на входе и на выходе макроса. Как компиляторы относятся к этому и что говорит стандарт?
Если компилятору "случайно" второй раз применить этот макрос к результату этого же макроса, то получится билиберда. Такие макросы сделаны для "удобства", но главное для улучшения читаемости кода. А применять в итоге их следует с осторожностью. Склейка и вложенные макросы могут по-разному работать у разных компиляторов т.к. не совсем стандартны.
|
|
|
|
|
Apr 29 2016, 06:55
|
Частый гость
 
Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364

|
Цитата(Сергей Борщ @ Apr 29 2016, 10:23)  Про это можно подробнее? В стандарте есть раздел 6.10.3.1 Argument substitution. В смысле не все компиляторы могут поддержать. Это имел ввиду.
|
|
|
|
Сообщений в этой теме
kolobochishe Сложная автозамена через #define Dec 9 2015, 08:59 psL http://stackoverflow.com/questions/1489932...macro... Dec 9 2015, 09:10 SSerge Цитата(kolobochishe @ Dec 9 2015, 15:59) ... Dec 9 2015, 11:33 jcxz Цитата(kolobochishe @ Dec 9 2015, 14:59) ... Dec 15 2015, 12:48 kolobochishe Цитата(SSerge @ Dec 9 2015, 17:33) ...
Уд... Dec 16 2015, 15:42  barabek Цитата(kolobochishe @ Dec 17 2015, 01:42)... Dec 16 2015, 22:18   kolobochishe Цитата(barabek @ Dec 17 2015, 03:18) Ошиб... Dec 17 2015, 10:12    barabek Цитата(kolobochishe @ Dec 17 2015, 20:12)... Dec 17 2015, 10:22    demiurg_spb Цитата(kolobochishe @ Dec 17 2015, 13:12)... Dec 17 2015, 10:37    barabek Цитата(kolobochishe @ Dec 17 2015, 20:12)... Dec 18 2015, 05:32  jcxz Цитата(kolobochishe @ Dec 16 2015, 21:42)... Dec 18 2015, 08:16   kolobochishe Цитата(jcxz @ Dec 18 2015, 13:16) А что и... Dec 18 2015, 10:28    jcxz Цитата(kolobochishe @ Dec 18 2015, 16:28)... Dec 21 2015, 08:11    Dog Pawlowa Цитата(kolobochishe @ Dec 18 2015, 13:28)... Dec 23 2015, 00:30 Флюктуация ваккума Нужно ипользовать вложенные макросы.
Т.е. вызов ма... Dec 16 2015, 18:35 Флюктуация ваккума Народ! Да выясните наконец подерживает компиля... Dec 18 2015, 14:01 Herz Цитата(Флюктуация ваккума @ Dec 18 2015, 16... Dec 18 2015, 14:06    GetSmart ЦитатаThe argument list is enclosed in parentheses... May 3 2016, 16:39     SSerge Цитата(GetSmart @ May 3 2016, 23:39) Вопр... May 4 2016, 16:33 k155la3 Если возникает сомнение в том
- как использовать ... Apr 29 2016, 05:48 ViKo Про особенности #define еще Керниган с Ричи в свое... Apr 29 2016, 08:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|