这是C宏观古怪的问题
是否可以编写一个宏,该宏以字符串常量X(“…”)为参数,并计算相同长度的字符串Y,从而使Y的每个字符都是X的相应字符的[constant]算术表达式
这是不可能的,对吗?不,C预处理器将字符串文本视为单个标记,因此无法执行任何此类操作
您所要求的应该在实际的C代码中完成。如果您担心运行时性能并希望在编译时委派此固定任务,那么现代优化编译器应该成功地处理这样的代码-它们可以展开任何循环并预计算任何固定表达式,同时考虑代码大小和CPU缓存使用模式,而预处理器对此一无所知
另一方
在更改宏之前进行数据检索。PS:另请参见;这与这个问题有关…在回答上面的@user2146958时:这里有人可以告诉你如何做:。我本想私下告诉你,但我在这个黑板上看不到这样做的方法,听起来你好像陷入了困境。
我有一个包含3个应用程序的总括项目:main\uweb、main和child
我在main中定义了一个宏,child应用程序使用该宏
在编译时,我有时会收到一个错误消息,说Main.MyMacro未在child\u app.ex的some\u文件中定义。当我再次运行相同的命令时,一切正常
我想这是因为在编译宏之前,child app.ex中的某个文件试图使用宏
确保加载Main.MyMacro,从而避免此错误的好方法是什么
我不确定运行mix compile apps/main是否正确如果伞式应
保罗·格雷厄姆:
例如,类型似乎是一个
取之不尽的研究资源
文件,尽管事实是静态的
键入似乎排除了真正的宏--
在我看来,没有这一点,就不可能
语言是值得使用的
宏有什么大不了的?我没有花太多时间研究它们,但从我使用过的遗留C/C++来看,在模板/泛型出现之前,它们似乎主要被用作黑客
很难想象
DECLARELIST(StrList, string);
StrList slist;
在某种程度上比
List<String> slist;
为什么不把它定义为一个函数呢?这是一种优化
clojure中的defrecord允许使用自定义字段定义简单的数据容器
e、 g
结果的最小构造函数只接受位置参数,没有其他功能,例如字段的默认设置、字段验证等
user=> (Book. "J.R.R Tolkien" "The Lord of the Rings" 9780618517657)
#:user.Book{:author "J.R.R Tolkien", :title "The Lord of the Rings", :ISBN 9780618517657}
总是可以编
如果我这样做,例如:
(defmacro qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
它失败是因为reify看到的是(qqq),而不是(toString[this]“qqq”)
是一个用我自己的东西包装“具体化”调用的宏,但它更长、更具侵入性
如何使我的宏比通常先展开的宏更强大
期待类似于:
(defmacro ^{:priority 100500} qqq [] '(toString [this] "Qqq"))
(reify
是否有办法使用标准的通用lisp函数/宏将一些函数从包临时导入当前包
我找不到,只好自己滚。如果标准已经提供了这样的功能,我宁愿不必编写任何代码,也不必引入另一种语言结构
(defmacro with-functions (functions the-package &body body)
"Allows functions in the-package to be visible only for body.
Does this by creating local lexica
标签: Macros
preprocessorsolaris
是否有人会发布Solaris 10或更高版本系统的cpp-dM
背景:
我打算为我正在开发的代码生成调试消息。我编写了一个宏,以避免在每个函数中写入日志调用。我知道这限制了生成更多定制调试消息的能力,但作为回报,它将日志记录与代码隔离开来。这就是我的目标。这种宏方法也有其他缺点,例如,它限制了只创建这个宏的函数绑定,但我认为我可以接受
下面是宏的定义和演示其用法的示例
(define-syntax (define-func stx)
(syntax-case stx ()
[(define-func (func-name args ...) bo
mydata是关于用户姓名和性别的:
(def mydata [["a" 'f] ["b" 'm]])
我想要的是:
(group-by #(let [[name gender] %1] name) mydata)
; {"a" [["a" f]], "b" [["b" m]]}
而且:
(group-by #(let [[name gender] %1] gender) mydata)
; {f [["a" f]], m [["b" m]]}
所以我想构建一个这样的函数:
(defn m
作为一个学习练习,我试图编写一个生成两个声明的宏。在本例中,我尝试编写一个宏,该宏使用单个字段和包含该字段实例的静态向量为枚举生成声明:
#![feature(macro_rules)]
macro_rules! create_enum(
( $enum_name : ident , $a_field_name : ident ) =>
{
enum $enum_name { $a_field_name };
我正在尝试创建一个宏,该宏将自动刷新Smart View中的数据。我需要能够让它在不打开文件的情况下自动运行。我是新的宏,我不是一个专家,所以如果有人可以帮助我,将非常感谢。它需要每天自己刷新
这是我的密码
Sub RefreshWB()
Dim i As Integer
For i = 1 To Worksheets.Count
If Sheets(i).Visible Then
Sheets(i).Select
Call HypMenuVRe
我有以下代码:
%macro initial (first=, second=, third=, fourth=, final=);
data &first;
set wtnodup.&first;
DATE1 = INPUT(PUT(Date,8.),YYMMDD8.);
format DATE1 monyy7.;
RUN;
proc freq data=&first order= freq;
假设我在运行时有一个以字符串作为键的哈希表。宏是否可以访问此信息并从中构建let表达式
(define env (hash 'a 123 'b 321))
(magic-let env (+ a b)) ; 444
我知道我可以通过在哈希表中用查找替换未定义的标识符来破解标识符绑定,但是阴影将不会像在正常的let中那样工作
标记scheme,因为我假设它的宏系统是类似的。不,你不能这样做。至少不是你描述的那样
无法在宏中访问运行时值的一般原因很简单:宏在编译时完全展开。编译程序时,运行时值根
我想写一个宏,可以分解一条路径来操作它的组件。例如:
macro_rules! example {
($path:path) => {
vec![
stringify!(get_path_init!($path)),
stringify!(get_path_last!($path)),
]
};
}
fn main() {
let path_parts = example!(std::
关于卫生宏观
我不完全理解宏是如何工作的。这里有两个例子。
第一个是:
这个很好,但是这个:
#lang racket
(define-syntax (g stx)
(syntax-case stx ()
([_ arg]
#'(display arg))))
(define display 1)
(g 3)
将引发异常。如何解释这两种情况之间的区别
如何定义这样的宏
我想定义一个宏来允许racket中的匿名递
我正在使用Tera Term V4.92
我创建了一个TTL脚本来创建Term并连接到COM端口10
;;
;; Connection via COM port
;;
connect '/C=10'
;;
;; The timeout limit is 1 min.
;;
timeout = 60
;;
;; Pauses until one of the timeout occurs.
;;
;;
waitevent 1
;;
;; Closes Tera Term
;;
clos
如果这个简单的宏可以扩展多个项,那么它如何将宏作为参数呢
macro_rules! print_structs {
($($t:ty)*) => ($(
println!("{:?}", TypeId::of::<$t>());
)*)
}
// expands one println per type!
print_structs! { i8 i16 usize String }
请参阅示例uncommentuncomment TO TES
我想把易变性传递给宏,这样我就可以
mymacro![mut foo];
mymacro![bar];
宏会将它们视为不同的匹配项。要使用哪个说明符?没有。您需要两条规则:一条匹配文本mut,另一条不匹配
macro_rules! do_something {
(mut $name:ident) => { ... };
($name:ident) => { ... };
}
是的,它们必须按顺序排列,因为宏臂是自上而下匹配的
我在libreoffice calc v5.1.6.2中遇到了一个小问题,因为我没有找到如何使用宏在工作表上显示/隐藏按钮
我说的是直接在工作表上的按钮,而不是对话框按钮(还没有在对话框上测试过,可能会出现同样的问题…)
因此,我可以使用以下方法启用/禁用它们:
MyButton.enabled = True (or False)
在我用正确的对象填充“MyButton”之后,但是没有
MyButton.visible = False
或
尽管“visible”属性存在于编辑器中,但位于设计
标签: Macros
c-preprocessorpowerpcaltivec
我正在尝试确定何时激活一些Altivec代码路径。当我在-qaltivec生效时检查预处理器宏时,我没有看到相应的预处理器宏(见下文)
我们的担忧或恐惧是需要-qaltivec和-DALTIVEC=1或类似的东西。用户几乎从未阅读过该手册,因此它将为平台生成无休止的问题和错误报告。如果RTFM真的能起作用的话,它会在过去50年左右发生
当-qaltivec生效时,XL/C是否会发出Altivec信号?如果没有,我们还有其他方法可以推断吗
提前谢谢
下面是从,这是一台Power7机器。我不知道为
我对SAS宏编程比较陌生,我主要使用它使我的代码“更干净”,避免重复代码中的错误
我做了一些谷歌搜索,但并没有找到简单的方法
首先我有两个问题-如何将列列表传递给宏
我想让宏在一般代码中看起来像这样:
proc sql;
create table &usefulTable as
%DoStuff('col1, col3, col9', 'col1 = 12 or (col2 between 1 and 3)')
;
基本上,我将列值作为第一个参数传递,将where子句作为第二个参数传
我需要识别目录中的所有回文。我使用proc contents和proc sort来标识目录中的数据集,如下所示:
proc contents data = dPath._all_ out = dFiles (keep = memname);
run;
proc sort data = dFiles nodupkey; by memname;run;
我想识别这个目录中的回文
问题:
我计划使用宏,因为我需要对目录中的所有数据集执行此操作。因此,与用户输入字符串检查是否有回文不同,我需要动
类型为,但ArrayTerral没有任何插入元素的方法。所以我的问题是如何在优雅的调用中添加参数
我只知道这种愚蠢的方式:
macro method_missing(call)
Delegator.{{call.name}}("a new parameter", {{call.args}}) {{call.block}}
end
但是它很难处理#命名为_arg,尤其是#splat_index(尽管它是块的成员,这里也有同样的问题)
是否存在更好的方法,或者它是编译器开发人员的待办事项功
我希望创建一个Rust宏,它可以实现C中的功能
#define V(a,b,c,d) 0x##a##b##c##d
使用以下命令调用时:
V(7B,B0,B0,CB)
只需在编译时将以下十六进制数放入代码中:
0x7BaB0bB0cCDd
试着这样做:
macro_rules! gen_hex_num {
($a:expr , $b:expr , $c:expr , $d:expr) => (
0x($a)a($b)b($c)c($d)d
)
}
产
假设我有一个jsonb字段,我想根据它的一个字段排序,它也应该使用dynamic,因为在编译时无法告诉字段名。我目前拥有的是:
def order_by_dynamic([sort_direction, %{binding_name: binding_name, json_field: json_key, field: field}]) do
[{sort_direction |> String.to_atom(), dynamic([{^binding_name, c}], cr
我有一个公共的Lisp reader宏来解析“or”关系的延迟/延迟声明,使用由管道chacaters(“|”)分隔的中缀语法以及标准列表括号和关键字文本。考虑表单(:A:By:C),它表示一个2部分元组,其中第一个元素是肯定的:A,第二个元素是:B或:C。例如,可以推断整个元组的有效形式是(:a:b)或(:a:c)
我已经有了函数封装逻辑来分解读取宏之后的这些元组列表表单。但在读取时,我需要解析一个表单,比如:a |:b |:c,并用移除的管道标记它,比如(:lazy或:a:b:c)。使用中缀
我不熟悉Velocity。我有如下要求
我在jsp页面中有一个下拉列表,其中包含以下值
1正常
2反向
如果选择1,则正常拍卖的属性应显示在同一页面上
如果选择2,则反向拍卖的属性应显示在同一页面上
有谁能指导我如何使用velocity宏实现同样的目标
一小段示例代码真的很有帮助
谢谢不能从网页调用Velocity宏,我相信这是您想要做的。您可以通过重新加载页面并呈现Velocity模板来实现您的要求,但我不确定这是否是您想要的
基本上,velocity似乎不是适合您的解决方案,正如serg和N
在Common Lisp(SBCL 1.0.58)中,为什么宏OR使用gensym,而不是AND
比如说,
CL-USER> (macroexpand '(and 1 2 3 4 5))
(IF 1
(AND 2 3 4 5)
NIL)
T
CL-USER> (macroexpand '(or 1 2 3 4 5))
(LET ((#:G967 1))
(IF #:G967
#:G
如何在宏中有几个不同的嵌套元素?在宏中不能有不同的嵌套元素,每次使用它都会输出相同的文本
如果您希望宏中有多个变量部分,可以使用#assign元素
允许定义正文、页眉和页脚内容的页面宏示例:
<#macro pageTemplate header="" footer="">
${header}
<#nested >
${footer}
</#macro>
这个解决方案非常有效,只要你不需要,这实际上是个好主意。如果footer应该包含
我在数据步骤中调用宏,并将宏变量指定给数据步骤变量,如下所示
宏的输入来自具有大约500条记录的输入数据集
%macro test(inp_var);
%global macro_var;
--- using inp_var variable here---
%if --some condition-- %then call symput('macro_var',-- some value--);
%mend;
data output;
set input;
%test(i
标签: Macros
libreofficelibreoffice-basiclibreoffice-calc
我搜索了很多,但几乎找不到关于libreofficebasic的信息
我有点习惯在excel中编程宏,但这次需要循环,直到我到达第一个空列,它需要在libreoffice中
在excel中,我会这样做:
Dim i As integer
i = 0
Range("A1").Select
While cell.Offset(0, i).Value <> Null
i = i + 1
Wend
MsgBox ("First empty column is " & Chr
如何在多个文件上运行我在Sublime Text 2中构建的宏,而不必单独打开每个文件?宏需要一个视图来操作,这意味着需要打开一个文件。但是,构建一个插件应该相当简单,它接受一系列文件名作为输入,打开每个文件名,运行宏,然后保存和关闭文件。
我对SAS有问题。更准确地说,是调用另一个宏中的宏。这是一个例子
data TEST_1;
do i = 1 to 100;
a=i**2;
output;
end;
run;
data TEST_2;
do i = 1 to 100;
b=i**3;
output;
end;
run;
%macro macro_in(file_a);
data result1;
set &file_a;
c=a+1;
run;
%mend
我正在尝试创建一个宏来生成Clojuredeftype,它需要生成类型提示。我目前有一些测试代码:
(defmacro test-macro [n]
(let [obj-sym (gensym "obj")
p0 (with-meta 'p0 {:tag java.lang.Object})
p1 (with-meta 'p1 {:tag java.lang.Integer/TYPE})
r0 (with-meta 'remove {:tag java.lang.Bo
我想从Calc电子表格的每一行创建一个新的txt文件html文件。我从Excel电子表格中找到了一些答案,但它们不适用于Calc
我没有Excel。我用的是OOO4
我在Calc中尝试了此Excel宏,但出现错误-范围是未知的数据类型。研究这一点似乎表明Excel宏在OOO Calc中无法正常工作。我发现,如果我在选项中启用“可执行代码”,Excel宏可能会正常工作,但这没有帮助。下面的宏假设只有两列,我试图让它作为一个起点工作
子导出文件
Dim sExportFolder,sFN
暗淡的稀有
每当count变量等于1时,我想使用sas对数据集进行子集设置。例如,以下数据集将分为两个数据集:
Over Ball Bowling Runs_scored Count
39 1 Ali 1 1
39 2 Ali 1 2
39 3 Ali 2 3
39 4 Ali 1
我最近刚刚开始使用ImageJ(或者更具体地说是斐济)来测量显微镜照片中硅藻壳的大小。用一张千分尺的参考照片来设定全球尺度,然后简单地用测线工具来测量我的硅藻,这是非常简单的。唯一的问题是,每次我启动程序时,我都必须重置刻度,我希望避免额外的麻烦,但也避免每次校准都有点不同的问题。我找到了启动宏生成器,如果我能让它将刻度设置为每微米164.4像素,我将是一只快乐的河马。不幸的是,我对计算机语言一窍不通。有人能帮我吗。您可以使用(插件>宏>记录…)获取实现该目标所需的代码:
run(“设置比例…”
标签: Macros
batch-processingimagejavi
我正在尝试使用imageJ宏批转换.avi文件
dir1=getDirectory(“路径/源”);
dir2=getDirectory(“路径/目标”);
list=getFileList(dir1);
setBatchMode(真);
对于(i=0;i您可以使用该过程轻松实现您的目标▶ 批处理▶ 宏…命令
有关详细信息,请参见ImageJ wiki上的。您试图实现什么?当前在宏中,您正在打开一个AVI文件(如果名称以“AVI”结尾)或保存当前图像(无论在运行时是什么)作为当前的文件名…我想这
这个问题是为了从宏内部的表达式构建表达式。然而,引用整句话时,事情变得有点像卡车司机。例如,我想构建表达式:(name=val)。以下是:
macro quotetest(name,val)
quote
nm = Meta.quot($(QuoteNode(name)))
v = Meta.quot($(QuoteNode(val)))
println(nm); println(typeof(nm))
println(v); println(typeof(va
我正在使用一个字符串interning()库,它使用宏高效地创建元素(atom!)。但是为了简化,这里有一个类似的宏演示了这个问题
macro_rules! string_intern {
("d") => ("Found D");
}
假设我需要从另一个宏调用这个宏,并给它一个标识符的字符串版本
macro_rules! print_ident {
($id:ident) => (
string_intern!(stringify!($id));
我需要根据用户的配置动态生成函数子句。为了清楚起见,假设我有一个原子列表:
@atoms ~w|foo bar baz|a
来自,比如说,config.exs。我需要的是生成此函数(MCVE过于简单,但它给我留下了实际需要的印象):
我目前正在做的是:
@clauses Enum.map(@atoms, fn tag ->
{:->, [], [[{:{}, [], [tag, {:_, [], Elixir}]}], false]}
end) ++ [{:->, [],
从模块中正确定义的这两个宏
defmacro binary(key) do
quote do
[
fragment("some fragment", unquote(key)),
fragment("some fragment", unquote(key))
]
end
end
defmacro mapbin(key) do
quote do
%
我希望有一个简单的解决方案:我需要一个latex宏来忽略tex脚本中的特定文本。例如:
\begin{ignoretext}
bla bla
hello
\end{ignoretext}
应编译为
hello
提前感谢:)Pythontex软件包
我通过一揽子计划取得了成果。我假设您将搜索并安装系统所需的编译器/包,这样您就可以运行以下示例
这是您正在搜索的内容的一个最小示例:
\documentclass{article}
\usepackage{pythontex}
\新命令{\igno
你好
我遇到了以下情况,宏变量被定义为全局变量,这取决于它们是否来自include。。。。在宏中定义的变量不应该在宏外部可见,对吗。这失败了:
%macro if_env;
%let a=100;
%mend if_env;
%if_env;
%put &a.;
警告:未解析明显的符号引用A
这是意料之中的。
但是,我遇到了一个问题,变量会流入全局空间:
我有一个include文件:C:\TEMP\test.sas,它只包含用于测试目的的变量a b C d:的设置
%let a
我想学习一些关于球拍及其宏观系统的知识。我的介绍一直在围绕着这个主题写一个薄薄的包装。我的预备读物包括格雷格·亨德肖特(Greg Hendershott)、的(特别是关于宏生成宏和相关文档的部分)和其他在线资源
我希望能够做到这样:
(iex-op* chart dividends quote)
要生成函数iex图表,iex股息,等等。对我来说,使用语法转换器似乎很自然,因为我不认为我可以轻松编写一个语法清晰、参数多的函数生成函数
因此:
这假设一个工作的iex op语法转换器:
(defin
我想使用使用属性的自定义派生宏。对于Rust 2015,我写道:
#[macro_use]
extern crate pest_derive;
#[derive(Parser)]
#[grammar = "grammar.pest"]
pub struct MyParser;
使用edition='2018',extern板条箱已被弃用,因此macro\u use不可用。我假设我可以编写使用pest_-deriver::{grammar,deriver_-parser},但我必须编写使用pe
如何使用宏获取类方法的参数类型
class A{
public function new(){
//this how get method out arg[0] Type with macro?
var arg0IsInt:Bool=arg0IsInt(out);
}
public function out(a:Int){ return true; }
macro public function arg0IsInt(e:Expr):Bool{
}
}
在构造字母时,我将
AND和OR是宏,由于宏不是scheme/racket中的第一类,因此它们不能作为参数传递给其他函数。部分解决方案是使用和映射或映射。是否可以编写一个函数来接受任意宏并将其转换为函数,以便将其作为参数传递给另一个函数?是否有任何具有第一类宏的语言?一般,不。考虑让(或可以)作为宏在代码> lambda < /代码>:
(let ((x 1))
(foo x))
可以是一个扩展到
((lambda (x) (foo x)) 1)
现在,将let转换为函数会是什么样子?显然这是胡说八道。它的
我使用proc macro hack创建了用于打印的宏。
尽管我已经定义了a,但还是发生了这个错误
下面是代码
在十二月的板条箱上
proc_macro_expr_decl! {
/// Function for printing to the standard output.
///
/// First argument can be literal or not literal.
gprint! => gprint_impl
}
在impl板条箱上
u
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 56 页