Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Макросы

07.08.2019, 22:24. Показов 4601. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что такое Макросы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.08.2019, 22:24
Ответы с готовыми решениями:

Макросы
Ребята помогите!Надо переделать все пож макросы.Но в литературе как -то всё обрывками написано.непонятно как целиком программу писать! ...

макросы
#include <iostream> using namespace std; #define printarray(x,y)//вывод массива x-имя массива, y-число элементов???? int main() ...

макросы
Помогите со встроенными макросами, нигде не могу найти. Дайте ссылку на справочник по встроенным макросам либо можно выложить их здесь. ...

51
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
07.08.2019, 22:36
Макросы - это функции созданные с помощью директивы #define, которые принимают параметры подобно функциям.

Например:
#define sum(x,y) x = x + y

Если потом напишем это:
int a=2;
int b=3;
sum(a,b);
cout<< sum;

То получим это:
a=5 b=3
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
07.08.2019, 22:38
Фрагменты исходного текста (возможно, параметризованные), которым дано имя. Обрабатываются препроцессором. Если очень кратко и грубо...
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 22:41  [ТС]
Rudman132, а зачем их вообще использовать? в чем разница между ними и обычной функцией?

Добавлено через 1 минуту
Цитата Сообщение от Rudman132 Посмотреть сообщение
#define ADD(x,y) x = x + y
Это есть полноценный макрос или псевдокод? нету типа возращаемого значения,скобок
0
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
07.08.2019, 22:44
Цитата Сообщение от ReYalp Посмотреть сообщение
зачем их вообще использовать?
Они упрощают жизнь программисту, но в макросах надо разобраться
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 22:47  [ТС]
Rudman132, так а каким образом упрощают? приведенный выше пример вряд ли чем-то упростит ее

Добавлено через 27 секунд
Rudman132,
Цитата Сообщение от ReYalp Посмотреть сообщение
#define ADD(x,y) x = x + y
Это есть полноценный макрос или псевдокод? нету типа возращаемого значения,скобок
0
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
07.08.2019, 22:48
Цитата Сообщение от ReYalp Посмотреть сообщение
#define ADD(x,y) x = x + y
полноценный
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 22:51  [ТС]
Rudman132, макрос имеет тип? Или каждый макрос разный тип? Или макрос это и есть тип данных?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.08.2019, 22:52
Цитата Сообщение от ReYalp Посмотреть сообщение
Или макрос это и есть тип данных?
Макросы к типам данных не имеют никаких отношений. Открой любую книжку по С++ для начинающих и почитай.
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
07.08.2019, 22:53
Цитата Сообщение от Rudman132 Посмотреть сообщение
Они упрощают жизнь программисту
Но дико усложняют отладку программы ))
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 22:56  [ТС]
Azazel-San, как тогда можно сделать так
Цитата Сообщение от Rudman132 Посмотреть сообщение
sum(a,b);
cout<< sum;
??
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.08.2019, 22:57
Rudman132, Почти каждое предложение, написанное вами в этой теме - ошибочно. Цитировать и объяснять даже смысла нет.
Но для примера
Цитата Сообщение от Rudman132 Посмотреть сообщение
Макросы - это функции...
Бред.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.08.2019, 22:58
Цитата Сообщение от ReYalp Посмотреть сообщение
как тогда можно сделать так
никак.
Там выводить надо а.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 23:01  [ТС]
Azazel-San, вот поэтому я и спрашивал

Добавлено через 1 минуту
Байт, так что такое макрос? Вообще интересует что подразумевается под макросом в этом предложении?
Вызов module_init() — это не вызов функции, а макрос, который устанавливает значение своего параметра в качестве функции инициализации для текущего модуля.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.08.2019, 23:02
ReYalp, разве так
C++
1
2
3
4
5
#define ADD(x, y) (x) + (y)
...
int x = 2;
int y = 3;
std::cout << ADD(x, y);
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 23:05  [ТС]
Azazel-San, но тогда какой тип данных возвращает данный макрос? int ? Зачем использовать в данной ситуации макрос если можно использовать обычную функцию?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.08.2019, 23:08
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

Цитата Сообщение от ReYalp Посмотреть сообщение
но тогда какой тип данных возвращает данный макрос?
Никакой, макросы это удел препроцессора, типов на этом этапе не существует еще, это просто константы.
Типизация дело компилятора.
Цитата Сообщение от ReYalp Посмотреть сообщение
int ?
Потом да, это будет int.
Цитата Сообщение от ReYalp Посмотреть сообщение
Зачем использовать в данной ситуации макрос если можно использовать обычную функцию?
Да, в общем незачем.
Цитата Сообщение от ReYalp Посмотреть сообщение
так что такое макрос?
Копипаста. То что ты написал в "теле" макроса, компилятор это тупо вставит, сделает CTRL+V в место вызова.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.08.2019, 23:12
ReYalp, Вам для начала стоит разобраться, как происходит обработка кода транслятором.
Коротко так. Первый этап - препроцессор. Он просто работает с текстом, не подозревая о языке на котором он написан. Хоть на суахили. И он делает 2 интересные вещи.
1. По директиве #include просто вставляет в текст указанный файл
2. По директиве "#define AAA тра-та-та" заменяет в дальнейшем тексте все вхождения "AAA" на "тра-та-та"
Ничего "языкового" - типов, функций .. он не знает. Это просто обработка текста по простым правилам.
А после препроцессора, над тем текстом, что получился у него на выходе, работает сам Си-транслятор. Который проверяет синтаксис, и в случае его правильности строит объектный код. Вот ему-то все эти понятия - "типы данных, функции, переменные ..." понятны и важны.
Работа препроцессора весьма подробно и доходчиво описана в одном из блогов уважаемого Evg
1
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
07.08.2019, 23:12  [ТС]
Azazel-San, это как инлайн функции?) или лямбда функции?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
07.08.2019, 23:16
Цитата Сообщение от Azazel-San Посмотреть сообщение
Да, в общем незачем.
Ну, кроме некоторых случаев
Например, версии С++ задетектить и т.д.
Цитата Сообщение от ReYalp Посмотреть сообщение
это как инлайн функции?) или лямбда функции?
Нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.08.2019, 23:16
Помогаю со студенческими работами здесь

Макросы в С++
Доброго времени суток. Подскажите, где можно почитать про написание макросов для классов? У меня есть класс class Transition { ...

Макросы
Здравствуйте, сделал программу, а мне еще сказали нужно сделать её с использованием макросов, знаю что это не долго и всё, не мог бы...

Макросы
Написать макрос находящий большое из 4 чисел в студии с++

макросы
#define EMPTY 0x00 #define ILLEGAL 0xF0 #define B_PRIVATE 0x01 // 1 бит - наличие #define W_PRIVATE 0x03 ...

Макросы с аргументами
Напишите программу, содержащую макросы с аргументами, вычисляющие площади различных геометрических фигур (например, квадрата,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru