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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
#1

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

12.11.2011, 23:23. Просмотров 2345. Ответов 55
Метки нет (Все метки)

Друзья! Есть какой-нибудь способ без 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++
Функция atof() возвращает не точное значения C++
C++ Возвращаемые значения функции
C++ возвращаемые значения функции шаблонного класса A и A<T>
C++ Почему функция atan возвращает значения фрагментарно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
12.11.2011, 23:27     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #2
Название макросов выводить? Нельзя их выводить. Читайте, что такое макросы.
Mayonez
 Аватар для Mayonez
380 / 272 / 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
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
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
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
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
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
13.11.2011, 00:34  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #8
Короче, ты не знаешь.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.11.2011, 00:46     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #9
Надо чтобы в консоли вывелось odin
C++
1
return "odin";
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
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++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2011, 08:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #13
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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);
}
Но что-то мне подсказывает, что в данном случае все это ни к чему
агерон
 Аватар для агерон
267 / 266 / 33
Регистрация: 12.10.2009
Сообщений: 1,042
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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
13.11.2011, 10:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #16
агерон, ты это к чему сейчас написал?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
13.11.2011, 10:17  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #17
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
ну так я их и использую, а вы знаете, как надо сделать?
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2011, 10:38     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #18
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
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++ Как функция возвращает указатель на структуру в массив указателей
C++ Можно ли вывести сразу 2 значения int из функции через return?
Функция возвращает массив Vector, как реализовать C++
можно как то сравнить возвращаемые значения этими функциями(разнопотоковыми)? функции на разных потоках C++

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

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

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