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

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

Войти
Регистрация
Восстановить пароль
 
Avadd
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
#1

Несколько макро с разными параметрами - C++

23.04.2014, 17:50. Просмотров 219. Ответов 7
Метки нет (Все метки)

Всем привет!
Хочу определить в программе
C++
1
2
#define func(number)            { call(number, 0); }
#define func(number1, number2)  { call(number1, number2); }
Но по понятным причинам компилятор ругается на (macro redefinition)
Подскажите как обойти эту фигню
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 17:50     Несколько макро с разными параметрами
Посмотрите здесь:

C++ конструктор с параметрами
C++ Программа с параметрами
Сортировка разными методами C++
нужна зарезервированная макро константа для максимального значения unsigned int C++
C++ вычислить значения одной и той-же функции с разными значениями, в несколько потоков
C++ Вывести массивы с разными строками
Define внутри макро-функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
23.04.2014, 17:53     Несколько макро с разными параметрами #2
Avadd, Чем не угодила перегрузка функций?
Avadd
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
23.04.2014, 18:01  [ТС]     Несколько макро с разными параметрами #3
0x10, ну... в зависимости от других дефайнов эти макросы могут вырождаться в другие формы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define SOMETHING 10
 
#if SOMETHING == 10
#define func(number) { call(ololo); call(2); }
#endif
 
#if SOMETHING == 2
#define func(number) { call(ololo); }
#endif
 
#if SOMETHING == 0
#define func(number) { (void)0 }
#endif
Как-то так
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
23.04.2014, 18:06     Несколько макро с разными параметрами #4
Avadd, не аргумент, тела функций тоже можно заключать в блоки условной компиляции.
Avadd
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
23.04.2014, 18:27  [ТС]     Несколько макро с разными параметрами #5
Нашел такое решение
http://stackoverflow.com/questions/3...-with-c-macros
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
23.04.2014, 18:40     Несколько макро с разными параметрами #6
Может быть, оправдано для Си. Для С++ не вижу повода так извращаться.
Avadd
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
23.04.2014, 18:58  [ТС]     Несколько макро с разными параметрами #7
А как ты предлагаешь сделать для с++ вот это

C++
1
2
3
4
5
6
7
8
#if SOMETHING == 2
#define func(x)         { printf("%s value = %d\n", (__FILE__), (#x)); call(x)}
#define func(x,message)    { printf("%s. %s: value = %d\n", (__FILE__), message, (#x)); call(x) }
#endif
 
#if SOMETHING == 1
#define func(x)       { call(x); }
#endif
?

Вариант встраивать диагностические сообщения (printf чо-та там) в тело call не рассматриваются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 19:12     Несколько макро с разными параметрами
Еще ссылки по теме:

Как автоматически создать несколько переменных с разными именами? C++
Функции с разными соглашениями о вызовах C++
C++ Шаблонный метод с разными параметрами
Инициализация объектов разными типами C++
Программа осуществляющая вызов функции несколько раз с различными параметрами C++

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

Или воспользуйтесь поиском по форуму:
0x10
2452 / 1624 / 238
Регистрация: 24.11.2012
Сообщений: 3,999
23.04.2014, 19:12     Несколько макро с разными параметрами #8
А тут уже другой случай - используется специфичная для препроцессора фича - получение имени переменной в коде программы, что и мешает реализовать иначе.
Yandex
Объявления
23.04.2014, 19:12     Несколько макро с разными параметрами
Ответ Создать тему
Опции темы

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