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

функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
12.11.2011, 23:23     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #1
Друзья! Есть какой-нибудь способ без if-else? Ну то есть вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
#define odin 1
 
////////////всякий код
 
int f () {retutn 1;};
 
#include <stdio.h>
////////////////всякий код
int main () {
 printf ("%d\n", f());
}
Надо чтобы в консоли вывелось odin. Спасибо, кто откликнется!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2011, 23:23     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Посмотрите здесь:

Существует ли метод/функция перевода значения символьной переменной в int C++
C++ Какие значения возвращает функция анализа символов?
Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? C++
C++ Функция принимает указатель на void и возвращает указатель на int
Функция atof() возвращает не точное значения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
12.11.2011, 23:27     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #2
Название макросов выводить? Нельзя их выводить. Читайте, что такое макросы.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
12.11.2011, 23:37     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #3
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[odin];
можно как-то так попробовать организовать
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
12.11.2011, 23:40  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #4
Так организовать-то и я могу.
Если функция воезвращает 1, т вывести odin
Но это не наш метод, она ведь может возвращать любое int, case копать неохота.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
12.11.2011, 23:43     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #5
Чем вам вариант Mayonez не нравится? Нет никаких case.
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[ f() ];
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
13.11.2011, 00:00  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #6
С макросами удобнее в том сымсле, что они более близки тык скыть конечному пльзователю.
Ну я кропаю класс, я пишу в пояснительной записке: величины такие-то определены в макросах. А тут что я напишу? величины такие-то определены в массиве указателей?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
13.11.2011, 00:06     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #7
Еще раз, читайте что такое макросы. А то вам говоришь, а вам все равно.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
13.11.2011, 00:34  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #8
Короче, ты не знаешь.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.11.2011, 00:46     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #9
Надо чтобы в консоли вывелось odin
C++
1
return "odin";
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
13.11.2011, 01:04  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #10
Очень смешно
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
13.11.2011, 01:18     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #11
Ты не знаешь, я не знаю, все не знают! Мир незнаек просто.
Bers
Заблокирован
13.11.2011, 02:19     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #12
Не знаю, пригодится тебе это или нет. Я не дружу с суржиками, и с си.
И не знаю, как там с этим дело обстоит.

Но вот на с++ можно вот такое замутить:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define EndProgramm() return 0
#define VAL(x) #x
#define STR(x) VAL(x)
 
#define Odin 1
 
std::string f1 () { std::string test= VAL(Odin); return test; }
std::string f2 () { std::string test= STR(Odin); return test; }
 
int main()
{
    std::cout<< f1()<<std::endl;
    std::cout<< f2()<<std::endl;
 
 
    EndProgramm();
}
Добавлено через 16 минут
Извиняюсь, я немножко перепутал имена макросов. Наоборот назвать их нужно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define EndProgramm() return 0
#define STR(x) #x  //вернёт символьное 
                   //представление аргумента макроса
 
#define VAL(x) STR(x)  //вернет значение 
                         //аргумента макроса
 
#define Odin 1
 
std::string f1 () { std::string test= VAL(Odin); return test; }
std::string f2 () { std::string test= STR(Odin); return test; }
 
int main()
{
    std::cout<< f1()<<std::endl; //вывод 1
    std::cout<< f2()<<std::endl; //вывод Odin
 
 
    EndProgramm();
}
/ps по вечерам реально жосско глючит форум
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2011, 08:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #13
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.11.2011, 08:53     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #14
Тут могут помочь x-макросы и с99 decignated initializers:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
 
#define IDENT_TABLE             \
    DEF_IDENT(0, zero)              \
    DEF_IDENT(1, one)               \
    DEF_IDENT(2, two)               \
    DEF_IDENT(3, three)             \
    DEF_IDENT(4, four) 
/* and so on... */
 
#define DEF_IDENT(ID, DESC) DESC = ID,
enum ids 
{
    IDENT_TABLE
};
#undef DEF_IDENT
 
#define DEF_IDENT(ID, DESC) [ID] = #DESC,
const char* ids_repr[] =
{
    IDENT_TABLE
};
#undef DEF_IDENT
 
enum ids foo()
{
    return three;
}
 
int main(void)
{
    printf("%d = %s\n", foo(), ids_repr[foo()]);
    
    exit(zero);
}
Но что-то мне подсказывает, что в данном случае все это ни к чему
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,030
13.11.2011, 09:41     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #15
а потом так прикольно в макросах искать ошибки на этапе компиляции и рунтайма :-D:-D:-D:-D:-D:-D

вопрос что вернет макрос при ниже указанном вызове?

C
1
2
3
#define min(X, Y)  ((X) < (Y) ? (X) : (Y))
 
next = min (x + y, foo (z));
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.11.2011, 10:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #16
агерон, ты это к чему сейчас написал?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
13.11.2011, 10:17  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #17
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
ну так я их и использую, а вы знаете, как надо сделать?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2011, 10:38     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #18
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
13.11.2011, 10:44  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #19
Bers, видите, в чём дело, f2, вот эта
C++
1
    std::cout<< f2()<<std::endl;
должна возвращать int, а не string

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
А, ясно. То есть юзать в С++ нечто называющееся макросами, нельзя. Но то же самое, называющееся макроопределениями- можно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2011, 10:45     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Еще ссылки по теме:

C++ Возвращаемые значения функции
C++ Почему функция atan возвращает значения фрагментарно
C++ Функция вычисления среднего значения возвращает странное значение

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2011, 10:45     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #20
Цитата Сообщение от kravam Посмотреть сообщение
А, ясно. То есть юзать в С++ нечто называющееся макросами, нельзя. Но то же самое, называющееся макроопределениями- можно.
Если мы пословоблудить собрались - позвольте откланяться.
Yandex
Объявления
13.11.2011, 10:45     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Ответ Создать тему
Опции темы

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