@rakcheevdmitriy

Как использовать define константы при конкатенации?

Пусть имеется код:
#define N n
#define DECODE(q,w,e,r) q ## w ## e ## r
#define START DECODE(m,a,i,N)

Тогда при конкатенации получится START = maiN. У меня два вопроса:
1) Почему подставляется имя константы N, а не её значение (n)?
2) Можно ли использовать define-константы при конкатенации в участке кода, как на примере выше? Чтобы получилось START = main.
Работаю в VS 2013.

Прошу если не ответить на вопрос прямо, то хотя бы ткнуть мордой в нужную литературу, чтобы почитать.
Спасибо
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
@abcd0x00
Прошу если не ответить на вопрос прямо, то хотя бы ткнуть мордой в нужную литературу, чтобы почитать.

www.open-std.org/JTC1/SC22/WG14
Скачаешь там стандарт и найдёшь описание
6.10.3 Macro replacement

И макросы используются для простых замен, когда нужно, например, вставить кусок кода в нескольких местах, но на функцию он не тянет. Именно так их и нужно рассматривать - в качестве автоматизированной вставки, не более.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы