macros相关内容
一直在寻找支持鼠标键盘监听和执行的原生nodejs模块 我找到了这个.. https://npmjs.org/package/mouse但是源代码看起来只支持浏览器. 解决方案 我一直在开发一个用于发送鼠标和键盘事件的模块,RobotJS. 示例代码: var robot = require("robotjs");//获取鼠标位置,用x和y返回一个对象.var mouse=r
..
我正在寻找一种解决方案,允许我编写本机 Emacs Lisp 代码并在编译时将其转换为 HTML,例如 Franz 的 htmlgen: (html(((:div类“发布")(:h1 "标题")(:p “你好,世界!"))) 我当然可以自己写宏,但如果有任何解决此问题的项目,我很感兴趣. 解决方案 同时,我发现 一些代码,其中包含我想要的类似内容.现在我可以写了: (views-wi
..
我已经在 node.js 上实现了自己的 Lisp,我可以像这样运行 s-expression: (断言 (= 3 (+ 1 2)))(def even? (fn [n] (= 0 (bit-and n 1))))(断言(甚至?4))(assert (= false (even?5))) 现在我想添加宏 - defmacro 函数 - 但这是我卡住的地方.我想知道如何在其他 Lisps 中
..
我听说 Lisp 的宏系统非常强大.但是,我发现很难找到一些实用的例子来说明它们的用途.没有他们就很难实现的事情. 谁能举几个例子? 解决方案 源代码转换.所有种类.例子: 新的控制流语句:您需要 WHILE 语句吗?你的语言没有?为什么要等待仁慈的独裁者明年增加一个.自己写吧.五分钟后. 更短的代码:您需要 20 个看起来几乎相同的类声明 - 只有有限数量的地方不同.编
..
我们正在尝试在 C++17 及其 更改为 std::uncaught_exception 下测试一些代码.我似乎无法让 GCC 提供 __cplusplus 的值: $/opt/local/bin/g++ -std=c++17 -dM -E -
..
如何在 Jinja2 参数列表声明中添加注释? 我尝试过的一切都会出错:jinja2.exceptions.TemplateSyntaxError: unexpected char u'#' {{ Switch('var',[('1', 'foo'), # 评论 1('2', 'bar'), ## 评论 2('3', '朗姆酒'), {# 评论 3 #}]) }}{% 宏开关(var, c
..
在 Peter Seibel 的《Practical Common Lisp》一书中,我们可以找到非常复杂的一次性宏的定义(见页面底部 http://www.gigamonkeys.com/book/macros-defining-your-own.html). 我在过去 3 周内第 10 次阅读此宏定义,但无法理解它是如何工作的.:( 更糟糕的是,我无法自己开发这个宏,即使我了解它的用途和
..
当我在处理一个充满宏技巧和魔法的大型项目时,我偶然发现了一个宏无法正确扩展的错误.结果输出为“EXPAND(0)",但EXPAND被定义为“#define EXPAND(X) X".,所以很明显输出应该是“0". “没问题",我心想.“这可能是一个愚蠢的错误,这里有一些令人讨厌的宏,毕竟有很多地方会出错".正如我所想的那样,我将行为不端的宏隔离到他们自己的项目中,大约 200 行,并开始研究
..
似乎我经常花费太多时间来尝试让#define 宏完全按照我的意愿行事.我将在下面发布我当前的困境,并感谢任何帮助.但实际上更大的问题是是否有人可以推荐任何实用程序来快速显示宏实际在做什么?如果我能看出问题所在,即使是缓慢的试错过程似乎也会变得更快. 目前,我正在从我制作的 DLL 中动态加载一长串函数.按照我的设置方式,函数指针与导出的函数具有相同的名称,用于原型化它们的 typedef(s
..
我将从一个例子开始.这是 Scala 2.10 中作为宏的元组的 List.fill 的等价物: 导入 scala.language.experimental.macros导入 scala.reflect.macros.Context对象元组示例 {def fill[A](arity: Int)(a: A): Product = macro fill_impl[A]def fill_impl[A
..
我已经习惯了 Haskell 的惰性求值,现在我已经正确地使用了惰性求值,我发现自己对默认急切的语言感到恼火.这实际上是相当有害的,因为我使用的其他语言主要使懒惰地评估东西变得非常尴尬,通常涉及推出自定义迭代器等等.因此,仅仅通过获得一些知识,我实际上已经降低了在我的原始语言方面的工作效率.叹息. 但我听说 AST 宏提供了另一种干净的方式来做同样的事情.我经常听到诸如“懒惰评估使宏变得多余
..
用于区分 Linux 和 Mac OSX 的 GCC/G++ 宏? 解决方案 下次你想在一个平台上检查 GCC 支持的预定义宏时,运行带有标志 -dM.它将列出系统上所有可用的预定义宏.例如: $ touch dummy.hxx$ cpp -dM ./dummy.hxx#define __DBL_MIN_EXP__ (-1021)#define __FLT_MIN__ 1.1754943
..
图书馆https://github.com/c42f/tinyformat/blob/2f9335afd9941688e42d60cae5166b9f0600b2d1/tinyformat.h#L1104-L1116,使用这个很棒的技巧在 C++ 98 上做“可变参数"模板: inline void printfln(const char* fmt){格式(std::cout,fmt);std:
..
亲爱的,我有一个包含预处理器宏的小型 Fortran 程序.下面是一个最小的例子.在 mac os x 上,它运行良好,但是当我在 windows 7(64 位)上编译它时,它总是打印 unknown operating system.我在 Windows 7 上使用 gfortran-4.8.0 (mingw32). 程序 foo隐式整数(i-n),双精度(a-h,o-p),+ 字符*8(x
..
我有一个包含两个元素子列表的列表,它们将在程序过程中发生变化和增长.我想编写一个宏,它需要一个键并动态生成一个 case,例如: ;;这是保存 CASE 子句的列表(setf l '((数字 2) (符号 3)));;我想进行以下扩展(类型 'y(2号)(符号 3)) 我可以有一个只引用全局 l: 的宏 (defmacro m (x)`(类型,x,@l)) 会正确展开 (m 'y) ;
..
我经常发现自己创建了一个“包装器"块,它只是用于执行许多其他块,通常具有相同的类型签名. 假设我有 2 个具有相同类型签名的块: MyBlockT block1 = ^(NSString *string, id object) {//1 做一些工作};MyBlockT block2 = ^(NSString *string, id 对象) {//2 做一些其他的工作}; 有没有办法实现魔
..
如何从我自己的宏中调用内置的 Chicken Scheme 宏 - 特别是在这种情况下为 let-values? (定义语法...(IR-宏变压器(lambda (expr 注入比较)(让值(...)...... 未绑定变量:let-values 解决方案 这恐怕是个小错误.一个简单的 (import-for-syntax chicken) 为我解决了问题. 在 CHICKEN
..
哪个宏语句可能导致意外结果? #define YEAR_LENGTH 365#define MONTH_LENGTH 30#define DAYCALC(y, m, d) ((y * YEAR_LENGTH) + (m * MONTH_LENGTH) + d)主函数(){整数 x = 5,y = 4,z = 1;cout 我运行程序非常好,没有任何意外结果. 是否有一些隐藏的例外?
..
这是我正在玩的一些 C++ 代码: #include #include #定义输入,#define FOREACH(x,y) for(unsigned int i=0;i 但是,我收到一个错误: 宏“FOREACH"需要 2 个参数,但只有 1 个给定 如果我将 IN 更改为逗号,则代码会编译.如何让 IN 代替逗号? 更新:对于那些感兴趣的人,这
..
我在 http://www0.us.ioccc 查看该计划.org/1988/westley.c,在 另一个 SO 答案 - 它应该打印 pi 的值,大约 3.142,但是当我编译并运行它时,我得到 0.250.看起来当 GCC 预处理器(测试的 4.1.2 和 3.4.6)在代码上运行时,它会转换 #define _ -F 到 -F 但我认为,要让程序正常运行,它应该是 -F 即GC
..