Макросы[РЕШЕНО]

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Сообщение gruffi »

Добрый день, форумчане! Есть вот такой макрос:

Код: Выделить всё

#define PIN_SOUND_PIN 0
#define PIN_ENABLE(GPIOx, PIN) GPIOx->BSRR |= GPIO_BSRR_BS##PIN
при вызове:

Код: Выделить всё

PIN_ENABLE(GPIOA, SOUND_PIN);
В Visual Studio работает, а в eclipse ругается, т.е. он склеивает строку как GPIO_BSRR_BSSOUND_PIN.
Как сделать, чтобы подставлялось числовое значение, а не строковое?
Последний раз редактировалось gruffi Чт дек 26, 2013 15:54:14, всего редактировалось 1 раз.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Сообщение gruffi »

Тему можно закрывать, уже подсказали. Если кому будет интересно:
To get the macro to expand, a second level of indirection is required, as shown by this compliant solution:
#define JOIN(x, y) JOIN_AGAIN(x, y)
#define JOIN_AGAIN(x, y) x ## y
Реклама
Ответить

Вернуться в «ARM»