|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
Макросы07.08.2019, 22:24. Показов 4957. Ответов 51
Метки нет (Все метки)
0
|
|
| 07.08.2019, 22:24 | |
|
Ответы с готовыми решениями:
51
Макросы макросы макросы |
|
Диванный эксперт
|
||||||||||||||||
| 07.08.2019, 23:22 | ||||||||||||||||
Сообщение было отмечено ReYalp как решение
Решение
ReYalp, если упрощенно макрос - это именованный кусок кода.
Применяются они для генерации текста программ. Заведует макросами препроцессор - отдельная программа или модуль компилятора. Препроцессор вставляет текст макроса на место "вызова" его как текст и ничего не знает от типах. Получившийся результат передается на вход компилятора. у gcc например есть специальный флаг -E - запустить только препроцессор.Был код:
1
|
||||||||||||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||
| 07.08.2019, 23:24 [ТС] | |||
|
Azazel-San, тоесть в моем случае
#define module_init(void) set_init_func(void) Добавлено через 1 минуту #define module_init(void func) set_init_func(void func)
0
|
|||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 07.08.2019, 23:27 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 07.08.2019, 23:32 | |||
|
Немножко философии. Что есть любая программа? Это преобразование одного текста в другой, и ничего более. Аппарат макросов предлагает несколько простых правил для этой работы. Конечно, с помощью этих правил можно сделать далеко не все. Но кое-что - можно. Добавлено через 2 минуты ![]() ReYalp, поверьте - все много проще!
2
|
|||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|||||||||||||||||
| 07.08.2019, 23:34 | |||||||||||||||||
|
В вашем примере void - это не тип. void - это имя параметра. Если в теле макроса вставить это имя, то оно будет заменено параметром, который передали при вызове макроса.
0
|
|||||||||||||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 07.08.2019, 23:35 | |
|
ReYalp, вот, не поленился. Специально для вас
https://www.cyberforum.ru/blogs/18334/blog100.html
1
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 07.08.2019, 23:40 [ТС] | |
|
Байт, всмысле умных? разве инлайн функции не похожи на макросы? тоже заменяются (не всегда конечно),а лямбда похожи на макросы тем что тоже вставляются в код,но я уже понял что макросы вставляются на моменте препроцессора.
Azazel-San, Вам что-то даст кусок кода с явным вызовом макроса(или как назвать этот процесс)? я спросил примерно,чтобы понять логику работы. Добавлено через 1 минуту Байт, та не стоило таких усердий,я понял что это такое. Добавлено через 59 секунд Max Dark, почему параметры в скобках?
0
|
|
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|
| 07.08.2019, 23:40 | |
|
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||
| 07.08.2019, 23:43 | ||
|
Я уверен там была не только она, а еще что-то, код какой-то или дополнение к цитате, ибо какой ф-и, какого модуля и т.д, это если вам нужен ответ на вопрос, "что там у вас". А примерно уже вам описали.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||||||
| 07.08.2019, 23:45 [ТС] | ||||||
|
WxMaper, похожи и такие же это разные вещи
![]() Добавлено через 1 минуту Azazel-San,
Это самый простой модуль ядра, который только может быть. Функция hello_init() регистрируется с помощью макроса module_init() в качестве точки входа в модуль. Она вызывается ядром при загрузке модуля. Вызов module_init() — это не вызов функции, а макрос, который устанавливает значение своего параметра в качестве функции инициализации для текущего модуля. Все функции инициализации должны соответствовать прототипу int my_init(void)
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 07.08.2019, 23:46 | ||
|
Удачи!
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 07.08.2019, 23:49 [ТС] | |
|
Байт, уже сделал такие выводы) просто где-то в процессе своего обучения пропустил тему макросов ,видимо не было нужно,сейчас же чтобы нормально читать литературу подумал лучше разобраться ,спасибо всем
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
| 07.08.2019, 23:53 | ||||||
|
ReYalp, что-то типо такого будет
0
|
||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 07.08.2019, 23:55 [ТС] | |
|
Azazel-San, да я не спрашивал точно, а примерно, я понимаю и понимал что это API линукса .
0
|
|
|
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196
|
|
| 08.08.2019, 00:02 | |
|
Первое - макросы позволяют отсеить ненужное. Например вы можете под макросом скрыть определённую функцию. Если у вас Debug режим, то функция работает, если Realese - то нет. Там вы уменьшите код(который скомпилируется) и увеличите скорость работы программы. Второе - вы можете определяя константы в других файлах получать информацию, подключены или нет они и в зависимости от этого проводить манипуляции с кодом. Ну и третье, моё любимое. Есть такие макросы - __function__, _line_, _file_. подствляют значения в зависимости от нахождения в файле. На их основе пишутся логгеры.
Основное назначение макросов - манипуляция с кодом, а инлайн функции лишь оптимизация.
0
|
|
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|||||||||||||||||
| 08.08.2019, 00:02 | |||||||||||||||||
1
0
|
|||||||||||||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 08.08.2019, 00:11 [ТС] | |
|
WxMaper, так во втором случае ошибка ,это сразу видно, процедура ничего не возвращает.
0
|
|
| 08.08.2019, 00:11 | |
|
Макросы в С++ Макросы Макросы макросы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|