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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
30.07.2012, 17:24     Define внутри макроса #1
Подкажите возможно ли написать макрос кот. создаст #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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2012, 17:24     Define внутри макроса
Посмотрите здесь:

C++ define
[C++] Директива #define. В виде макроса определен шаблон функции. C++
C++ #define
define не C++
C++ #define
C++ c++11 и $define
Define внутри макро-функции C++
C++ #define c ::

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.07.2012, 17:32     Define внутри макроса #2

Не по теме:

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


Нет, препроцессор такого не может.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.07.2012, 19:25     Define внутри макроса #3
Если уж прям приспичило, то напиши свой препроцессор. Потом добавляешь его в события компилятора и он будет обрабатывать исходники, а результат уже будет обрабатываться стандартным препроцессором и компилятором. Именно так был написан первый компилятор С++.)
Yandex
Объявления
30.07.2012, 19:25     Define внутри макроса
Ответ Создать тему
Опции темы

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