Le macro vengono utilizzate per rendere disponibile al programmatore una sequenza di istruzioni di elaborazione come una singola istruzione di programma, rendendo l'attività di programmazione meno noiosa e meno soggetta a errori. [
So che sono implementati in modo estremamente pericoloso in C / C ++. Non possono essere implementati in un modo più sicuro? Gli svantaggi delle macro sono davvero abbastanza gravi da superare l'enorme potenza che forniscono?
Il preprocessore C è collegato a C, ma ha una sintassi completamente diversa dalla lingua principale: spazi bianchi sintatticamente significativi (fine della riga termina un'istruzione, gap dopo che la macro determina l'inizio dell'elenco di sostituzione) blocchi basati su parole chiave anziché blocchi rinforzati, elifanzichéelse if definizioni guidate da parole chiave …
Da diversi confronti tra modelli C ++ e generici C # / Java come questo- /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 Ho capito che i modelli C ++ sono implementati da una sorta di pre-elaborazione (sostituzione del testo normale prima dell'analisi), non compilazione. Perché il controllo del tipo nei modelli C ++ assomiglia alle macro …
Common Lisp ti permette di scrivere macro che fanno qualunque trasformazione di sorgente tu voglia. Scheme offre un sistema igienico di abbinamento dei modelli che consente anche di eseguire trasformazioni. Quanto sono utili le macro in pratica? Paul Graham ha dichiarato in Beating the Averages che: Il codice sorgente dell'editor …
Sto imparando Scheme dalla SICP e ho l'impressione che gran parte di ciò che rende Scheme e, ancora di più, LISP speciale è il sistema macro. Ma poiché le macro vengono espanse in fase di compilazione, perché le persone non creano sistemi macro equivalenti per C / Python / Java …
Sto leggendo "The Standard C Library" di PJ Plauger, il che è davvero interessante. Il libro spiega non solo come USARE la biblioteca ma anche come viene implementata. Ho finito di leggere la ctype.hsezione e nell'intestazione le funzioni sono dichiarate sia come macro che come funzioni. Per esempio int isdigit(int); …
Allo stato attuale, questa domanda non è adatta al nostro formato di domande e risposte. Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze, ma questa domanda probabilmente solleciterà dibattiti, argomenti, sondaggi o discussioni estese. Se ritieni che questa domanda possa essere migliorata e possibilmente riaperta, visita …
Sto cercando di imparare un po 'di LISP e ho letto molto sull'importanza delle macro LISP, quindi vorrei avere qualche esperienza lavorativa con loro. Puoi suggerire un'area di applicazione pratica che mi consentirebbe di utilizzare le macro per risolvere un problema del mondo reale e comprendere l'utilità di questo costrutto …
Quando guardano i decoratori di Python qualcuno ha fatto la dichiarazione, che sono potenti come le macro di Lisp (in particolare Clojure). Guardando gli esempi forniti in PEP 318, mi sembra che siano solo un modo fantasioso di usare semplici funzioni di ordine superiore in Lisp: def attrs(**kwds): def decorate(f): …
Diciamo che voglio avere diversi tipi di messaggi di output nel mio codice. Uno di questi è DEBUG, che viene stampato solo, quando il codice viene compilato in modalità Debug. Di solito dovrei scrivere qualcosa del genere #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif che è piuttosto ingombrante …
Ho sentito che le macro Clojure sono più facili da scrivere ma non affidabili come le macro igieniche di Racket. La mia domanda ha 2 parti: In che cosa gensymdifferisce dalle macro igieniche? Cosa forniscono le macro Racket che Clojure non ha? (che si tratti di sicurezza, componibilità o altro)
Ho letto delle biblioteche che le persone hanno scritto per linguaggi come Java e C # che fanno uso della tessitura del codice byte per fare cose come intercettare chiamate di funzioni, inserire codice di registrazione, ecc. Ho anche letto su macro Lisp / Clojure in un cercare di capire …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.