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

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

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

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

12.11.2011, 23:23. Просмотров 2414. Ответов 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, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Посмотрите здесь:

Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? - C++
Друзья! Вот код: #include &lt;windows.h&gt; #include &lt;stdio.h&gt; int main (){ PlaySound (&quot;fail.wav&quot;, 0, SND_FILENAME || SND_SYNC); ...

Можно ли вывести сразу 2 значения int из функции через return? - C++
Можно ли вывести сразу 2 значения из функции int через return ? Например функция находит X1 и X2 из квадратного уравнения, и может ли она...

можно как то сравнить возвращаемые значения этими функциями(разнопотоковыми)? функции на разных потоках - C++
можно как то сравнить возвращаемые значения этими функциями? и например если(они равны) {то завершить круг цикла и перейти к следующему}...

Функция atof() возвращает не точное значения - C++
Добрый день подскажите может кто знает есть программа в MFC фрагмент кода void Ce_weightDlg::OnBnClickedButton1() // зважування { ...

Какие значения возвращает функция анализа символов? - C++
Какие значения возвращает функция анализа символов?

Почему функция atan возвращает значения фрагментарно - C++
Всем привет, нужно значение угла от мыши (x, y) до координаты (0,0) окна. Пишу следующее: double panel::checkSector(int x, int...

Функция вычисления среднего значения возвращает странное значение - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;memory.h&gt; using namespace std; int maximum(int *mass, int n) //Функция...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
12.11.2011, 23:27     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #2
Название макросов выводить? Нельзя их выводить. Читайте, что такое макросы.
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
12.11.2011, 23:37     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #3
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[odin];
можно как-то так попробовать организовать
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
12.11.2011, 23:40  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #4
Так организовать-то и я могу.
Если функция воезвращает 1, т вывести odin
Но это не наш метод, она ведь может возвращать любое int, case копать неохота.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
12.11.2011, 23:43     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #5
Чем вам вариант Mayonez не нравится? Нет никаких case.
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[ f() ];
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
13.11.2011, 00:00  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #6
С макросами удобнее в том сымсле, что они более близки тык скыть конечному пльзователю.
Ну я кропаю класс, я пишу в пояснительной записке: величины такие-то определены в макросах. А тут что я напишу? величины такие-то определены в массиве указателей?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
13.11.2011, 00:06     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #7
Еще раз, читайте что такое макросы. А то вам говоришь, а вам все равно.
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
13.11.2011, 00:34  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #8
Короче, ты не знаешь.
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.11.2011, 00:46     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #9
Надо чтобы в консоли вывелось odin
C++
1
return "odin";
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
13.11.2011, 01:04  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #10
Очень смешно
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
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
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2011, 08:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #13
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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);
}
Но что-то мне подсказывает, что в данном случае все это ни к чему
агерон
268 / 267 / 33
Регистрация: 12.10.2009
Сообщений: 1,055
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
13.11.2011, 10:13     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #16
агерон, ты это к чему сейчас написал?
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
13.11.2011, 10:17  [ТС]     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #17
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
ну так я их и использую, а вы знаете, как надо сделать?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2011, 10:38     функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? #18
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
kravam
быдлокодер
1691 / 878 / 44
Регистрация: 04.06.2008
Сообщений: 5,409
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, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Еще ссылки по теме:

Существует ли метод/функция перевода значения символьной переменной в int - C++
Хотел спросить, существует ли метод/функция перевода значения символьной ПЕРЕМЕННОЙ в int?

Возвращаемые значения функции - C++
Есть функция, которая должна вернуть в программу значение, но что то не так. int StartInfo(int FirstWidth,int FirstHeight) { printf...

Функция внутри статической библиотеки не возвращает нужного значения при вызове из основного проекта - C++
Структура проекта - Статическая библиотека(создана и подключена правильно), в ней 1 .h и .cpp файл, в первом объявлены 4 класса, во 2-м...

возвращаемые значения функции шаблонного класса A и A<T> - C++
первый листинг template &lt;typename T&gt; class A { public: T a; A&amp; f()

Функция возвращает массив Vector, как реализовать - C++
Есть функция, которая принимает 4-е вектора, а выводить должна массив Сама функция: const QVector&lt;float&gt;* shuttle_method(const...


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

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

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