Родился 6 января 1933 года в селе Удомля (ныне город Тверской области) в семье военнослужащего. Русский.
В 1957 году окончил Московское высшее техническое училище имени Н. Э. Баумана, работал в легендарном «Конструкторском бюро Королёва» — ОКБ-1, участвуя в разработке первых пилотируемых космических кораблей.
С 1966 года — в Отряде космонавтов, где прошёл полный курс общекосмической подготовки, подготовки к полётам на космических кораблях типа «Союз».
В 1965—1969 годах Макаров входил в группу советских космонавтов, готовившихся по советским программам облёта Луны Л1/«Зонд» и посадке на неё Л3.
Полёт пилотируемого корабля «Зонд-7» по лунно-облётной программе был предварительно назначен на 8 декабря 1968 года. По предварительным назначениям, Макаров входил в состав второго экипажа. Но полёт был отменён, несмотря на то, что экипажи написали заявление в Политбюро ЦК КПСС с просьбой разрешить немедленно лететь к Луне для обеспечения приоритета СССР (американцы планировали аналогичный пилотируемый полёт на 21—27 декабря 1968 года). Дело в том, что предыдущие беспилотные полёты кораблей «Зонд» (Л1) были полностью или частично неудачными из-за неотработанности корабля и ракеты-носителя «Протон». Приоритет остался за США — «Аполлон-8» в запланированные сроки совершил пилотируемый облёт Луны.
Макаров также был вторым членом главного экипажа, который, по предварительным назначениям, должен был выполнить (в сентябре 1968 г. — согласно графику советской программы от 1967 г.) первую экспедицию на Луну с высадкой на неё командира экипажа Леонова (Макаров должен был оставаться на окололунной орбите) по параллельной лунно-посадочной программе, которая также была отменена ввиду полного проигрыша СССР в «лунной гонке» после успешной высадки американцев на Луну на «Аполлоне-11» в июле 1969 года.
Член КПСС с 1961 года. Был делегатом XXVI съезда КПСС.
27-й космонавт СССР. Первый свой полёт в космос совершил на космическом корабле «Союз-12» (27-29.9.1973). Командиром экипажа был В. Г. Лазарев.
5 апреля 1975 года — «Союз-18-1», авария ракеты-носителя «Союз» на старте, суборбитальный полёт продолжительностью 21 минута 27 секунд.
Второй полёт в космос совершил на космическом корабле «Союз-27» и орбитальной станции «Салют-6» (10-16.1.1978). Командир экипажа — Владимир Александрович Джанибеков.
Третий полёт в космос совершил на космическом корабле «Союз Т-3» (27.11-10.12.1980). Командовал экипажем Леонид Денисович Кизим. Вместе с ними третьим членом экипажа был космонавт-исследователь Геннадий Михайлович Стрекалов.
Умер 28 мая 2003 года от сердечного приступа (инфаркт). Похоронен в Москве на Останкинском кладбище.