Макрокоманда, макроопределение[1] или мáкрос[2] (от macros — формы множественного числа слова macro) — программный алгоритм действий, записанный пользователем. Часто макросы применяют для автоматизации рутинных действий. Также макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов, например: фрагмент html-страницы в веб-шаблонах, или одно слово из словаря синонимов в синонимизаторах.
Корректный перевод термина с английского — «макрокоманда». Слово «макрос» получило распространение благодаря использованию в локализованных продуктах американской корпорации Microsoft[источник не указан 3631 день].
Во многих офисных[3] продуктах (OpenOffice.org, Microsoft Office и др.), в графических программах (например, CorelDRAW) при обработке макроса автоматически выполняется заданная для каждого макроса последовательность действий — нажатия на клавиши, выбор пунктов меню и т. д. Предоставляется интерфейс для записи новых и перезаписи существующих макросов. Также существуют текстовые редакторы, поддерживающие макросы, например Notepad++.
Используя макросы, можно значительно (в десятки, а то и в сотни раз) увеличить эффективность работы с приложением. Помимо выполнения набора встроенных в приложение команд, макрос позволяет производить обработку внешних файлов, загрузку и передачу файлов и данных через интернет, чтение и изменение настроек операционной системы.
В большинстве случаев макрорекордер (режим записи действий пользователя в виде макроса) выдаёт код, нуждающийся в доработке. Но, тем не менее, и такой макрос значительно сокращает время, требующееся на выполнение рутинных операций.
Для каждого интерпретатора (языков ассемблера) существует специальный синтаксис объявления и вызова макросов. Макрос может «разворачиваться» в различные последовательности инструкций при каждом вызове, в зависимости от сработавших разветвлений внутри макроса и переданных ему аргументов.
В Лиспе, благодаря развитой макросистеме, макропрограммирование позволяет расширять язык новыми формами и настройками. То есть, с помощью макросов можно определить предметно-ориентированный язык для решаемой задачи и процессор (транслятор или конвертор) для него. Под процессором в данном случае понимается программа, которая реализует типы данных и операции абстрактного языка на другом языке[4].
Хювёнен Э., Сеппянен Й. Мир Лиспа. В 2-х т. / Пер. с финск.. — М.: Мир, 1990. — ISBN 5-03-001935-9 (русск.). — ISBN 5-03-001336-9. — ISBN 951-26-2787-6 (финск.).