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

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

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

2
Каково происхождение препроцессора C?
Препроцессор C подключен к C, но его синтаксис совершенно отличается от основного языка: синтаксически значимые пробелы (конец строки завершает оператор, пробел после макроса определяет начало списка замены) блоки на основе ключевых слов вместо фигурных блоков elifвместоelse if определения на основе ключевых слов вместо объявления-отражает-использование, нет =для определения значения подсказки альтернативного …
30 c  history  macros 

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

6
Насколько полезны макросы Lisp?
Common Lisp позволяет вам писать макросы, которые выполняют любые преобразования исходного кода, которые вы хотите. Схема предоставляет вам гигиеническую систему сопоставления с образцом, которая также позволяет вам выполнять преобразования. Насколько полезны макросы на практике? Пол Грэм сказал в « Побивке средних», что: Исходный код редактора Viaweb, вероятно, содержал около 20-25% …
22 lisp  scheme  macros 

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

1
Почему библиотека C использует макросы и функции с одинаковыми именами?
Я читаю «Стандартную библиотеку С» П. Дж. Плаугера, которая действительно интересна. Книга объясняет не только как использовать библиотеку, но и как она реализована. Я закончил чтение ctype.hраздела и в шапке функции объявлены как макросы и функции. Например int isdigit(int); но и #define isdigit(c) (_Ctype[(int)(c)] & _DI) Я не понимаю, почему …
20 c  naming  functions  macros 

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

2
Каковы типичные приложения макросов Lisp?
Я пытаюсь изучить некоторые LISP, и я много читал о важности макросов LISP, поэтому я хотел бы получить некоторый опыт работы с ними. Можете ли вы предложить практическую область применения, которая позволила бы мне использовать макросы для решения реальной проблемы и понять полезность этой конструкции программирования? НОТА Это не общий, …

4
Python-декораторы и макросы Lisp
При поиске декораторов Python кто-то утверждал, что они такие же мощные, как макросы Lisp (особенно Clojure). Глядя на примеры, приведенные в PEP 318, мне кажется, что это всего лишь причудливый способ использования простых старых функций высшего порядка в Лиспе: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) …
18 python  lisp  clojure  macros 

3
Является ли использование макросов C / C ++ в качестве ярлыка для условной компиляции хорошей практикой?
Допустим, я хочу, чтобы в моем коде было несколько типов выходных сообщений. Один из них DEBUG, который печатается, только когда код скомпилирован в режиме отладки. Обычно я должен был написать что-то вроде #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif что довольно громоздко и раздражает во многих местах. Является …
13 c++  c  macros 

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

3
Плетение байт-кода против макросов Lisp
Я читал о библиотеках, написанных людьми для таких языков, как Java и C #, в которых используется переплетение байт-кода для таких вещей, как перехват вызовов функций, вставка кода регистрации и т. Д. Я также читал в макросах Lisp / Clojure в попытаться лучше понять, как их использовать. Чем больше я …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.