LINUX.ORG.RU

Расширение gcc или так можно исходя из стандарта???


0

0

Всем привет.  Вот есть такое обявление псевдонимов:

#define TOSH_ASSIGN_PIN(name, port, bit) \
static inline void TOSH_SET_##name##_PIN() {port##OUT |= BIT##bit;} \
static inline void TOSH_CLR_##name##_PIN() {port##OUT &= ~BIT##bit;} \
static inline uint16_t TOSH_READ_##name##_PIN() {return (port##IN & BIT##bit) !=static inline void TOSH_MAKE_##name##_OUTPUT() {port##DIR |= BIT##bit;} \
static inline void TOSH_MAKE_##name##_INPUT() {port##DIR &= ~BIT##bit;} \
static inline void TOSH_SEL_##name##_IO() {port##SEL &= ~BIT##bit;} \
static inline void TOSH_SEL_##name##_FUNC() {port##SEL |= BIT##bit;}

По этому поводу возник вопрос. Определение сразу 6 макросов при использовании макроса TOSH_ASSIGN_PIN(PIN_X_Y, PORT_X, Y) это расширение gcc или нормально описанная в стандарте ситуация???

все в соотвествие со стандартом естественно

anonymous
()

> Определение сразу 6 макросов при использовании макроса TOSH_ASSIGN_PIN(PIN_X_Y, PORT_X, Y)

где ты тут увидел определение 6 макросов??

dilmah ★★★★★
()
Ответ на: комментарий от bizon_art

TOSH_SET_PIN_X_Y_PIN() - не макрос, а функция, которая будет сгенерирована препроцессором _после_ обработки макроса TOSH_ASSIGN_PIN с параметрамом PIN_X_Y.

kosmonavt
()
Ответ на: комментарий от bizon_art

> TOSH_SET_PIN_X_Y_PIN() - это первый.
> TOSH_CLR_PIN_X_Y_PIN_PIN() - это второй. Далее я думаю продолжать не
> стоит.

В твоем коде это не макросы, а функции.

int19h ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.