Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_stanislav
43 / 43 / 13
Регистрация: 16.08.2014
Сообщений: 314
Завершенные тесты: 2
#1

макрос COMBINE - C++

18.01.2016, 15:53. Просмотров 140. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Дан код:

C++
1
2
3
4
5
#define SUFFIX                5
#define COMBINE(a,b)       COMBINE1(a,b)
#define COMBINE1(a,b)      a##b
 
#define I_DELEGATE         COMBINE(IDelegate, SUFFIX)
И пояснение (статья тут - https://rsdn.ru/article/cpp/delegates.xml)
Обратите внимание на использование вспомогательного макроса COMBINE1. Если напрямую реализовать макрос COMBINE как #define COMBINE(a,b) a##b, то результатом подстановки COMBINE(IDelegate, SUFFIX) будет "IDelegateSUFFIX". А это совсем не то, что мы хотим получить. Поэтому использование COMBINE1 в данном случае необходимо.

Вопрос, почему компилятор не может сразу подставить вместо "SUFFIX" "5"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2016, 15:53     макрос COMBINE
Посмотрите здесь:

C++ макрос <L> не работает
Макрос C++
Если макрос на VBA переписать на С++, то макрос станет работать быстрее? C++
Макрос на с++ C++
C++ Сложный макрос
Разработайте макрос C++
Сложный макрос C++
C++ макрос препроцессора
C++ Макрос TRACE
Реализуйте макрос C++
C++ Не работает макрос
C++ Макрос MyAssert

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2350 / 1056 / 232
Регистрация: 30.11.2013
Сообщений: 3,499
18.01.2016, 16:43     макрос COMBINE #2
_stanislav, https://github.com/isocpp/CppCoreGui...t-manipulation
Evg
Эксперт CАвтор FAQ
17275 / 5529 / 345
Регистрация: 30.03.2009
Сообщений: 15,041
Записей в блоге: 26
18.01.2016, 18:26     макрос COMBINE #3
http://www.cyberforum.ru/faq/thread5...ml#post2356359
Yandex
Объявления
18.01.2016, 18:26     макрос COMBINE
Ответ Создать тему
Опции темы

Текущее время: 06:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru