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

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

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

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

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

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

Шаблонный метод с разными параметрами - C++
Доброе утро, не получается сделать шаблонную магию - указывать полную специализацию типа, и интелесенс VS должен подсказать тебе какие...

Как автоматически создать несколько переменных с разными именами? - C++
Товарищи программисты, есть строка с данными и в ней присутствуют точки, помогите пожалуйста написать цикл Который бы присваивал каждой...

вычислить значения одной и той-же функции с разными значениями, в несколько потоков - C++
Есть задача, вычислить значения одной и той-же функции с разными значениями, которые известны изначально, в несколько потоков и вывести...

Программа осуществляющая вызов функции несколько раз с различными параметрами - C++
Даны действительные числа s,t. Получить g(1.2s)+g(2s-1,st), где g(a,b)=\frac{{a}^{2}+{b}^{2}-4*a*b}{{a}^{2}+5*a*b+3*{b}^{2}+4*a-b} ...

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

нужна зарезервированная макро константа для максимального значения unsigned int - C++
Ребят, срочно нужна зарезервированная макро константа для максимального значения unsigned int. Я могу ошибаться, но по-моему она должна...

7
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,125
23.04.2014, 17:53 #2
Avadd, Чем не угодила перегрузка функций?
0
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
Как-то так
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,125
23.04.2014, 18:06 #4
Avadd, не аргумент, тела функций тоже можно заключать в блоки условной компиляции.
0
Avadd
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
23.04.2014, 18:27  [ТС] #5
Нашел такое решение
http://stackoverflow.com/questions/3...-with-c-macros
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,125
23.04.2014, 18:40 #6
Может быть, оправдано для Си. Для С++ не вижу повода так извращаться.
0
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 не рассматриваются
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,125
23.04.2014, 19:12 #8
А тут уже другой случай - используется специфичная для препроцессора фича - получение имени переменной в коде программы, что и мешает реализовать иначе.
1
23.04.2014, 19:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 19:12
Привет! Вот еще темы с ответами:

Нужно несколько раз запустить один .bat файл с разными параметрами. - Visual Basic
Прошу помочь советом. Мне надо из VB appl (Windows NT)несколько раз запустить один и тотже .bat файл, но каждый раз c разными параметрами....

Конструктор с разными параметрами - JavaScript
...извините что обращаюсь, сам не местный...))) пробую создать обьект и написать конструктор. Загвоздка в том что в JS (кажеться)...

Вывод нескольких строк с разными параметрами - MySQL
Здравствуйте. MySQL мне в новинку, а в интернете немного неполные объяснения функций. Задача: PHP: Есть список id пользователей через...

Вызов контроллера ApiControllera с разными параметрами - C# ASP.NET
Доброго времени суток форумчане! Работаю с определёнными однотипными документами, решил сделать универсальный бекенд, т.к. документов...


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

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

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