Eu sei que eles são implementados extremamente inseguros em C / C ++. Eles não podem ser implementados de maneira mais segura? As desvantagens das macros são realmente ruins o suficiente para compensar o enorme poder que elas
As macros são usadas para disponibilizar uma sequência de instruções de computação ao programador como uma única instrução de programa, tornando a tarefa de programação menos tediosa e menos sujeita a erros. [
Eu sei que eles são implementados extremamente inseguros em C / C ++. Eles não podem ser implementados de maneira mais segura? As desvantagens das macros são realmente ruins o suficiente para compensar o enorme poder que elas
O pré-processador C é anexado a C, mas possui uma sintaxe completamente diferente da linguagem principal: espaço em branco sintaticamente significativo (o fim da linha termina uma instrução, intervalo após a macro determinar o início da lista de substituição) blocos baseados em palavras-chave em...
De diferentes comparações entre modelos C ++ e genéricos C # / Java como este /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 Percebi que os modelos C ++ são implementados por algum tipo de pré-processamento (substituição de texto sem...
O Lisp comum permite que você escreva macros que fazem a transformação de origem desejada. O esquema fornece um sistema higiênico de correspondência de padrões que permite executar transformações também. Quão úteis são as macros na prática? Paul Graham disse em Beating the Averages que: O...
Estou aprendendo o Scheme com o SICP e estou tendo a impressão de que grande parte do que torna o Scheme e, mais ainda, o LISP especial é o sistema macro. Mas, como as macros são expandidas em tempo de compilação, por que as pessoas não criam sistemas de macro equivalentes para C / Python / Java /...
Estou lendo 'The Standard C Library' de PJ Plauger, o que é realmente interessante. O livro explica não apenas como USAR a biblioteca, mas também como ela é implementada. Eu terminei de ler a ctype.hseção e no cabeçalho as funções são declaradas como macros AND. Por exemplo int isdigit(int); mas...
Atualmente, essa questão não se encaixa no nosso formato de perguntas e respostas. Esperamos que as respostas sejam apoiadas por fatos, referências ou conhecimentos, mas essa pergunta provavelmente solicitará debates, argumentos, pesquisas ou discussões prolongadas. Se você acha que...
Estou tentando aprender algumas LISP e li muito sobre a importância das macros LISP, então gostaria de ter alguma experiência de trabalho com elas. Você pode sugerir uma área de aplicação prática que me permita usar macros para resolver um problema do mundo real e entender a utilidade dessa...
Ao olhar para os decoradores de Python, alguém fez a afirmação de que eles são tão poderosos quanto as macros Lisp (principalmente o Clojure). Olhando para os exemplos dados no PEP 318 , parece-me que eles são apenas uma maneira elegante de usar funções simples de ordem superior antigas no...
Digamos que eu quero ter vários tipos de mensagens de saída no meu código. Um deles é DEBUG, que é impresso apenas, quando o código é compilado no modo de Depuração. Normalmente eu teria que escrever algo como #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif o que é...
Eu tenho lido sobre as bibliotecas que as pessoas escreveram para linguagens como Java e C # que utilizam tecelagem de código de bytes para fazer coisas como interceptar chamadas de função, inserir código de log etc. etc. Também estive lendo nas macros Lisp / Clojure tente entender melhor como...
Ouvi dizer que as macros Clojure são mais fáceis de escrever, mas não tão confiáveis quanto as macros higiênicas de Racket. Minha pergunta tem 2 partes: Como gensymas macros higiênicas diferem? O que as macros do Racket fornecem que o Clojure não fornece? (seja segurança, composição ou qualquer...
O primeiro abuso que me vem à mente em C é: #define if while Mas, ao mesmo tempo, é extremamente útil e poderoso quando usado corretamente. Algo semelhante acontece com as macros Common Lisp. Por que todas as linguagens de programação não suportam macros como esta e quais são as...
Sou novo no Clojure, sou novo no Macros e não tenho experiência anterior no Lisp. Eu criei meu próprio caso de switch como formulário e acabei com isso: (defmacro switch-case [v cases default] (if (cases v) (cases v) default )) e então tentei criar uma função e acabei com isso: (defn...