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

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

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

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

23.04.2014, 17:50. Просмотров 225. Ответов 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++
Доброе утро, не получается сделать шаблонную магию - указывать полную специализацию типа, и интелесенс 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. Я могу ошибаться, но по-моему она должна...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
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++
Дана такая main: int main() { C c1(6), c2 = 5, c3(c1 + c1); return 0; } Нужно определить класс С так, чтобы ошибочным было...

Функции с разными соглашениями о вызовах - C++
Здравствуйте. Вот, допустим, у меня есть две функции: void __stdcall FirstFunction(); void __thiscall SecondFunction(); ...

Вывести массивы с разными строками - C++
нужно заполнить двумерный массив размером 5 на 5, появилась проблема с рандомным заполнением, подпрограмма "Data" выводит массивы со всеми...


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

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

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