Запуск сканирования медиа на файлы, созданные в фоновом режиме

Есть некоторые основные проблемы с макросами.

Во-первых, они не учитывают область или тип. Если у меня есть #define max(a, b)..., то всякий раз, когда у меня есть токен max в моей программе, по какой-то причине он будет заменен. Он будет заменен, если это имя переменной или глубоко внутри вложенных областей. Это может вызвать затруднительные ошибки компиляции. Напротив, шаблоны работают внутри системы типа C ++. Функция шаблона может использовать свое имя повторно в пределах области видимости и не будет пытаться переписать имя переменной.

Во-вторых, макросы не могут быть изменены. Шаблон std::swap обычно просто объявляет временную переменную и выполняет очевидные назначения, потому что это очевидный способ, который обычно работает. Это ограничение будет ограничено макросом. Это было бы крайне неэффективно для больших векторов, поэтому векторы имеют специальный swap, который меняет местами ссылки, а не весь контент. (Это оказывается очень важным в материалах, который средний программист на C ++ не должен писать, но он использует.)

В-третьих, макросы не могут делать какие-либо формы ввода типов. Во-первых, вы не можете написать общий своп-макрос, поскольку он должен будет объявить переменную типа, и он не знает, какой тип может быть.

Одним из ярких примеров мощностей шаблонов является то, что изначально называлось стандартной библиотекой шаблонов, которая находится в стандарте как контейнеры, алгоритмы и итераторы. Посмотрите, как они работают, и попытайтесь подумать, как вы замените его макросами. Александр Степанов просмотрел большое количество языков для реализации своих идей STL и пришел к выводу, что C ++ с шаблонами был единственным, над которым он работал.

1
задан user149408 2 March 2019 в 02:21
поделиться