C Конкатенация макротокенов с переменной - возможно ли это?

Я пытаюсь определить макрос для генерации имени токена, содержащего переменную.

По сути, что Я пытаюсь это:

#define GLUER(x,y,z) x##y##z
#define PxDIR(x) GLUER(P,x,DIR)

int main() {
  int port;
  port = 2;
  PxDIR(port) |= 0x01;
}

Я надеюсь сгенерировать токен P2DIR в приведенном выше заявлении, но согласно выводу моего компилятора он генерирует токен PportDIR, который НЕ тот, который я хотел. Любая помощь здесь? Или то, что я пытаюсь сделать, невозможно?

8
задан Brian Tompsett - 汤莱恩 27 February 2016 в 20:23
поделиться