Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

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

12.11.2011, 23:23. Показов 4897. Ответов 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. Спасибо, кто откликнется!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2011, 23:23
Ответы с готовыми решениями:

Как функция возвращает значение int?
Доброго времени суток, собственно, как функция возвращает значение int? Создается переменная содержащая значение или сразу выполняется...

Макросы в эксель!Ребята необходимо разобраться в макросах!
Ребята,надо Написать программу, используя макросы в Excel,я в них не сильна. Программа должна быть в файле “ПО Свод.xls”. Запуск...

Функция (int) возвращает ноль
Добрый день! Пишу скрипт корзины, столкнулся с таким вопросом. Я делаю изменение кол-ва товара на ajax, что бы без перезагр. и у меня есть...

55
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
12.11.2011, 23:27
Название макросов выводить? Нельзя их выводить. Читайте, что такое макросы.
0
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
12.11.2011, 23:37
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[odin];
можно как-то так попробовать организовать
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.11.2011, 23:40  [ТС]
Так организовать-то и я могу.
Если функция воезвращает 1, т вывести odin
Но это не наш метод, она ведь может возвращать любое int, case копать неохота.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
12.11.2011, 23:43
Чем вам вариант Mayonez не нравится? Нет никаких case.
C++
1
2
char* names[] = {"null", "odin", "100500"};
cout << names[ f() ];
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.11.2011, 00:00  [ТС]
С макросами удобнее в том сымсле, что они более близки тык скыть конечному пльзователю.
Ну я кропаю класс, я пишу в пояснительной записке: величины такие-то определены в макросах. А тут что я напишу? величины такие-то определены в массиве указателей?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
13.11.2011, 00:06
Еще раз, читайте что такое макросы. А то вам говоришь, а вам все равно.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.11.2011, 00:34  [ТС]
Короче, ты не знаешь.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
13.11.2011, 00:46
Надо чтобы в консоли вывелось odin
C++
1
return "odin";
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.11.2011, 01:04  [ТС]
Очень смешно
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
13.11.2011, 01:18
Ты не знаешь, я не знаю, все не знают! Мир незнаек просто.
0
Заблокирован
13.11.2011, 02:19
Не знаю, пригодится тебе это или нет. Я не дружу с суржиками, и с си.
И не знаю, как там с этим дело обстоит.

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


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 по вечерам реально жосско глючит форум
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
13.11.2011, 08:13
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.11.2011, 08:53
Тут могут помочь 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);
}
Но что-то мне подсказывает, что в данном случае все это ни к чему
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
13.11.2011, 09:41
а потом так прикольно в макросах искать ошибки на этапе компиляции и рунтайма :-D:-D:-D:-D:-D:-D

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

C
1
2
3
#define min(X, Y)  ((X) < (Y) ? (X) : (Y))
 
next = min (x + y, foo (z));
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.11.2011, 10:13
агерон, ты это к чему сейчас написал?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.11.2011, 10:17  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, ага, вы "кропаете класс", и юзаете макросы?
Макросы - С-стайл, используйте именованые константы.
ну так я их и использую, а вы знаете, как надо сделать?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
13.11.2011, 10:38
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
13.11.2011, 10:44  [ТС]
Bers, видите, в чём дело, f2, вот эта
C++
1
    std::cout<< f2()<<std::endl;
должна возвращать int, а не string

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
kravam, я знаю, как делать не надо. А именно - юзать в С++ макросы.
А, ясно. То есть юзать в С++ нечто называющееся макросами, нельзя. Но то же самое, называющееся макроопределениями- можно.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
13.11.2011, 10:45
Цитата Сообщение от kravam Посмотреть сообщение
А, ясно. То есть юзать в С++ нечто называющееся макросами, нельзя. Но то же самое, называющееся макроопределениями- можно.
Если мы пословоблудить собрались - позвольте откланяться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2011, 10:45
Помогаю со студенческими работами здесь

Нестандартные заранее определенные макросы C++. Как посмотреть?
В опциях CXXFLAGS компилятора с++ указан макрос препроцессора: -D_UNIX Без него компиляция не проходит, выдаёт множество ошибок....

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

Как использовать значения, возвращаемые IEnumerable
Здравствуйте. Ситуация следующая (программа просто для того, что бы попробовать как работать с этой бд): у меня есть класс public...

Как получить возвращаемые значения функцией MessageBox
MessageBox.Show(&quot;Вы уверены, что хотите выйти?&quot;, &quot;Выход из игры!&quot;, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); Подскажите...

Как преобразовать в QString значения возвращаемые QDomElement?
Всем доброго времени суток! Собственно имеется структурированный xml, вида: &lt;firstTag attribute1=' ' attribute2=' '&gt; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru