Задать вопрос
@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.

Прошу если не ответить на вопрос прямо, то хотя бы ткнуть мордой в нужную литературу, чтобы почитать.
Спасибо
  • Вопрос задан
  • 319 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности инфраструктуры на основе технологий Active Directory»
    4 месяца
    Далее
  • Академия Codeby
    Курс «Цифровая криминалистика и реагирование на инциденты ОС Linux (DFIR)»
    14 недель
    Далее
Решения вопроса 1
@abcd0x00
Прошу если не ответить на вопрос прямо, то хотя бы ткнуть мордой в нужную литературу, чтобы почитать.

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

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

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

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