Ich weiß, dass sie in C / C ++ extrem unsicher implementiert sind. Können sie nicht sicherer umgesetzt werden? Sind die Nachteile von Makros wirklich schlimm genug, um die enorme Leistung, die sie bieten,
Makros werden verwendet, um dem Programmierer eine Folge von Rechenanweisungen als einzelne Programmanweisung zur Verfügung zu stellen, wodurch die Programmieraufgabe weniger mühsam und weniger fehleranfällig wird. [
Ich weiß, dass sie in C / C ++ extrem unsicher implementiert sind. Können sie nicht sicherer umgesetzt werden? Sind die Nachteile von Makros wirklich schlimm genug, um die enorme Leistung, die sie bieten,
Der C-Präprozessor ist an C angehängt, hat jedoch eine völlig andere Syntax als die Hauptsprache: syntaktisch signifikantes Leerzeichen (Zeilenende beendet eine Anweisung, Lücke nachdem das Makro den Anfang der Ersetzungsliste bestimmt) schlüsselwortbasierte Blöcke anstelle von geschweiften Blöcken...
Aus verschiedenen Vergleichen zwischen C ++ - Vorlagen und C # / Java-Generika wie diesem https://stackoverflow.com/questions/31693/was-sind-die-unterschiede- zwischen-generika-in-c-und-java-und-vorlagen-in-c/31929#31929 Ich habe die Vorstellung, dass C ++ - Vorlagen durch eine Art...
Mit Common Lisp können Sie Makros schreiben, die die gewünschte Quelltransformation ausführen. Das Schema gibt Ihnen ein hygienisches Musteranpassungssystem, mit dem Sie auch Transformationen durchführen können. Wie nützlich sind Makros in der Praxis? Paul Graham sagte in Beating the Averages...
Ich lerne Schema von der SICP und habe den Eindruck, dass ein großer Teil dessen, was Schema und vor allem LISP ausmacht, das Makrosystem ist. Aber, da Makros zur Kompilierungszeit erweitert werden, warum stellen die Leute keine äquivalenten Makrosysteme für C / Python / Java / whatever her? Zum...
Ich lese gerade 'The Standard C Library' von PJ Plauger, was wirklich interessant ist. Das Buch erklärt nicht nur, wie die Bibliothek NUTZT wird, sondern auch, wie sie implementiert wird. Ich habe den ctype.hAbschnitt gelesen und in der Kopfzeile sind die Funktionen als Makros UND Funktionen...
Aus heutiger Sicht passt diese Frage nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich Debatten, Argumente, Abstimmungen oder erweiterte Diskussionen hervorrufen. Wenn...
Ich versuche, etwas über LISP zu lernen, und ich habe viel über die Bedeutung von LISP-Makros gelesen, daher möchte ich gerne Erfahrungen mit ihnen sammeln. Können Sie einen praktischen Anwendungsbereich vorschlagen, in dem ich mithilfe von Makros ein reales Problem lösen und die Nützlichkeit...
Bei der Suche nach Python-Dekorateuren gab jemand die Aussage ab, dass sie genauso mächtig sind wie Lisp-Makros (insbesondere Clojure). Wenn ich mir die Beispiele in PEP 318 anschaue, sehe ich so aus, als wären sie nur eine ausgefallene Möglichkeit, einfache alte Funktionen höherer Ordnung in Lisp...
Angenommen, ich möchte mehrere Arten von Ausgabenachrichten in meinem Code haben. Eine davon ist die DEBUG, die nur gedruckt wird, wenn der Code im Debug-Modus kompiliert wird. Normalerweise müsste ich sowas schreiben #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif Das...
Ich habe über die Bibliotheken gelesen, die für Sprachen wie Java und C # geschrieben wurden, die das Weben von Bytecode verwenden, um beispielsweise Funktionsaufrufe abzufangen, Protokollcode einzufügen usw. Ich habe auch über Lisp / Clojure-Makros in einem gelesen versuchen Sie besser zu...
Ich habe gehört, dass Clojure-Makros einfacher zu schreiben sind, aber nicht so zuverlässig wie die Hygienemakros von Racket. Meine Frage besteht aus 2 Teilen: Wie unterscheidet gensymsich von Hygienemakros? Was bieten Racket-Makros, was Clojure nicht bietet? (sei es Sicherheit,...
Der erste Missbrauch, der mir in C einfällt, ist: #define if while Gleichzeitig ist es bei richtiger Anwendung äußerst handlich und leistungsstark. Ähnliches passiert mit Common Lisp-Makros. Warum unterstützen nicht alle Programmiersprachen solche Makros und welche Alternativen gibt es? Werden sie...
Ich bin neu in Clojure, ich bin neu in Makros und ich habe keinen vorherigen Hintergrund in Lisp. Ich fuhr fort, mein eigenes Switch-Case-ähnliches Formular zu erstellen, und endete mit folgendem: (defmacro switch-case [v cases default] (if (cases v) (cases v) default )) und dann versucht, eine...