Запитання з тегом «macros»

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

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

2
Яке походження препроцесора С?
Препроцесор 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?
Загальний Lisp дозволяє писати макроси, які роблять все необхідне перетворення джерела. Схема дає вам гігієнічну систему узгодження моделей, яка дозволяє також здійснювати перетворення. Наскільки корисні макроси на практиці? Пол Грехем сказав у " Побитті середніх", що: Вихідний код редактора Viaweb, ймовірно, мав приблизно 20-25% макросів. Які речі люди насправді роблять …
22 lisp  scheme  macros 

4
А що з LISP, якщо що, полегшує впровадження макросистем?
Я вивчаю схему з SICP, і складаю враження, що велика частина того, що робить Схему, а тим більше, LISP особливою є макросистема. Але, оскільки макроси розширюються під час компіляції, чому люди не створюють еквівалентні макросистеми для C / Python / Java / що завгодно? Наприклад, можна прив’язати pythonкоманду до expand-macros …

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, мені здається, що вони просто фантазійний спосіб використання простих старих функцій вищого порядку в Lisp: 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 простіше писати, але не такі надійні, як гігієнічні макроси Ракетки. Моє запитання має 2 частини: Чим gensymвідрізняються гігієнічні макроси? Що забезпечують макроси ракетки, які Clojure не роблять? (будь то безпека, компостування чи що-небудь)

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