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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
#1

Define внутри макроса - C++

30.07.2012, 17:24. Просмотров 1266. Ответов 2
Метки нет (Все метки)

Подкажите возможно ли написать макрос кот. создаст #define?
например:
C++
1
#define  MACRO(name)  #define NAME name
знаю, что напрямую так не напишешь т.к. второй define будет взят в кавычки, но может есть какая "хитрость"

Нужен макрос раскрывающийся в следующий код
пишем так:
C++
1
2
3
4
5
6
7
8
#define MAT1(name, ...) int name##1 [] = { __VA_ARGS__ }; 
#define MAT2(name, ...) int name##2 [] = { __VA_ARGS__ }; 
...
START(name)  // #define NAME name 
 MAT1(1, 2)
 MAT2(3, 4)
 MAT3(5, 6)
STOP()       // #undef NAME
Раскрыться должен в
C++
1
2
3
4
5
#define NAME name 
 MAT1(NAME ,1, 2)
 MAT2(NAME ,3, 4, 5)
 MAT3(NAME , 6)
#undef NAME
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2012, 17:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Define внутри макроса (C++):

[C++] Директива #define. В виде макроса определен шаблон функции. - C++
Здравствуйте! Есть проблема и мне она непонятна! В программке присутствует директива #define в ней в виде макроса определен...

Define внутри макро-функции - C++
Возможно ли сделать в стиле: #define MY_MACRO( a, b ) \ # ifdef a \ # define b 1 \ # ...

Что означает решетка внутри макроса? - C++
Нашёл код, там внутри макроса используются решетки. Что это означает? Если объясните сам код вообще было бы круто!:) #include...

define - C++
И еще такой вопрос для чего служит #define ??

#define c :: - C++
Подскажите как реализовать такую замену: #define sa2::sys::getClientKernel()->getXDBTManager() cls_SimpleXDBTManager::Instance() ...

#define - C++
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем недавно, поэтому толком ничего не знаю Во-первых,...

2
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.07.2012, 17:32 #2

Не по теме:

Рекомендую сменить язык на какой-нибудь из лиспов или другой с вменяемой поддержкой макросов, если уж хочется писать именно в таком стиле.


Нет, препроцессор такого не может.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.07.2012, 19:25 #3
Если уж прям приспичило, то напиши свой препроцессор. Потом добавляешь его в события компилятора и он будет обрабатывать исходники, а результат уже будет обрабатываться стандартным препроцессором и компилятором. Именно так был написан первый компилятор С++.)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2012, 19:25
Привет! Вот еще темы с ответами:

define не - C++
Здравствуйте. "Дефайню" "%f" для вывода: #define fss "%f"; . И потом делаю вывод вот такой вот: for(i=0;i<n;i++) fscanf(in,fss,&a->di);. И...

#define - C++
#define зачем нужна это заголовочный файл какие у него функции и как им ползоватса?

define - C++
Всем здрасьте , что означает эта строчка? #define MAX(a,b) a>b? a:b

c++11 и $define - C++
Есть код который прекрасно компилируется без -std=c++11, но как только я включаю эту опцию то константы препроцессора не заменяются и...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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