Вопросы с тегом «macros»

Макросы используются для того, чтобы сделать последовательность вычислительных инструкций доступной для программиста в виде единого программного оператора, что делает задачу программирования менее утомительной и менее подверженной ошибкам. [

31
Почему макросы не включены в большинство современных языков программирования?

Я знаю, что они реализованы крайне небезопасно в C / C ++. Разве они не могут быть реализованы более безопасным способом? Действительно ли недостатки макросов достаточно серьезны, чтобы перевесить огромную мощность, которую они...

30
Каково происхождение препроцессора C?

Препроцессор C подключен к C, но его синтаксис совершенно отличается от основного языка: синтаксически значимые пробелы (конец строки завершает оператор, пробел после макроса определяет начало списка замены) блоки на основе ключевых слов вместо фигурных блоков elifвместоelse if определения на...

27
Являются ли шаблоны C ++ просто прославленными макросами?

Из разных сравнений среди шаблонов C ++ и C # / обобщений Java, как этот /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 У меня сложилось впечатление, что шаблоны C ++ реализуются с помощью некоторой предварительной обработки (замена...

22
Насколько полезны макросы Lisp?

Common Lisp позволяет вам писать макросы, которые выполняют любые преобразования исходного кода, которые вы хотите. Схема предоставляет вам гигиеническую систему сопоставления с образцом, которая также позволяет вам выполнять преобразования. Насколько полезны макросы на практике? Пол Грэм сказал в...

21
А как насчет LISP, если что-нибудь облегчает внедрение макросистем?

Я изучаю Scheme из SICP, и у меня складывается впечатление, что большая часть того, что делает Scheme и, тем более, LISP особенным, - это макросистема. Но, поскольку макросы расширяются во время компиляции, почему люди не делают эквивалентные системы макросов для C / Python / Java / что угодно?...

20
Почему библиотека C использует макросы и функции с одинаковыми именами?

Я читаю «Стандартную библиотеку С» П. Дж. Плаугера, которая действительно интересна. Книга объясняет не только как использовать библиотеку, но и как она реализована. Я закончил чтение ctype.hраздела и в шапке функции объявлены как макросы и функции. Например int isdigit(int); но и #define...

20
Языки программирования с Lisp-подобным механизмом расширения синтаксиса [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

19
Каковы типичные приложения макросов Lisp?

Я пытаюсь изучить некоторые LISP, и я много читал о важности макросов LISP, поэтому я хотел бы получить некоторый опыт работы с ними. Можете ли вы предложить практическую область применения, которая позволила бы мне использовать макросы для решения реальной проблемы и понять полезность этой...

18
Python-декораторы и макросы Lisp

При поиске декораторов Python кто-то утверждал, что они такие же мощные, как макросы Lisp (особенно Clojure). Глядя на примеры, приведенные в PEP 318, мне кажется, что это всего лишь причудливый способ использования простых старых функций высшего порядка в Лиспе: def attrs(**kwds): def decorate(f):...

13
Является ли использование макросов C / C ++ в качестве ярлыка для условной компиляции хорошей практикой?

Допустим, я хочу, чтобы в моем коде было несколько типов выходных сообщений. Один из них DEBUG, который печатается, только когда код скомпилирован в режиме отладки. Обычно я должен был написать что-то вроде #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif что довольно...

11
Плетение байт-кода против макросов Lisp

Я читал о библиотеках, написанных людьми для таких языков, как Java и C #, в которых используется переплетение байт-кода для таких вещей, как перехват вызовов функций, вставка кода регистрации и т. Д. Я также читал в макросах Lisp / Clojure в попытаться лучше понять, как их использовать. Чем больше...

11
Какая практическая проблема возникает из-за отсутствия гигиенических макросов в Clojure?

Я слышал, что макросы Clojure легче писать, но они не так надежны, как гигиенические макросы Racket. Мой вопрос состоит из 2 частей: Чем gensymотличаются гигиенические макросы? Что предоставляют макросы Racket, чего нет у Clojure? (будь то безопасность, композитность или что-нибудь)...