macros 相关问题

***不要使用VBA / MS-Office语言。请改用相应的[vba]标签。***宏是一种规则或模式,用于指定某个输入序列(通常是一系列字符)应如何映射到输出序列(通常也是一系列字符),具体如下:一个确定的程序。

如何让我的 Excel 宏在 Outlook 中运行

下面的代码在目标 Excel 工作簿中运行时效果非常好。我最终想从 Outlook 中运行宏。当我尝试将路径添加到

回答 1 投票 0

生成用于在宏中索引元组的整数标记

我正在尝试编写一个宏来概括这种实现(将元组转换为类型级列表): impl TupleToList for (A, B, C) { 输入列表=缺点 我正在尝试编写一个可以通用化这种实现的宏(将元组转换为类型级列表): impl<A, B, C> TupleToList for (A, B, C) { type List = Cons<A, Cons<B, Cons<C, Nil>>>; fn to_list(self) -> Self::List { Cons { head: self.0, tail: Cons { head: self.1, tail: Cons { head: self.2, tail: Nil } } } } } (具有以下结构/特征声明) pub trait List {} pub struct Nil; pub struct Cons<Head, Tail: List> { pub head: Head, pub tail: Tail, } pub trait TupleToList { type List; fn to_list(self) -> Self::List; } 我们的想法是拥有这样一个宏,可以为任何元组实现此特征(T1, T2, T3, ... TN)。 到目前为止,我已经完成了大部分工作,但还缺少一件: /// Recursively build the list type for list / tuple conversions. macro_rules! inner_tuple_to_list { () => {Nil}; ($elem:ty, $($rest:tt)*) => { Cons<$elem, inner_tuple_to_list!($($rest)*)> }; } macro_rules! inner_to_list_func { ($self:ident,) => { Nil }; ($self:ident, $elem:ty, $($rest:tt)*) => { Cons { head: $self.0, tail: inner_to_list_func!($self, $($rest)*) } }; // ^------ MISSING DETAIL } /// Implements the TupleToList and ListToTuple traits for any tuples. macro_rules! tuple_to_list { ($($elems:tt)*) => { impl <$($elems)*> TupleToList for ($($elems)*) { type List = inner_tuple_to_list!($($elems)*); fn to_list(self) -> Self::List { inner_to_list_func!(self, $($elems)*) } } } } tuple_to_list!(T1, T2,); 我遇到了编译错误,它期望输入 T2 但得到 T1。显然,因为我在我的宏实现中硬编码了self.0(我在其中添加了缺少细节的注释)。 我想要的是保留一个计数器,在适当的位置使用它$self.$counter并在每次递归时增加它,以增量方式放置self.0,self.1,self.2等 我知道在宏中计数的技术(此处描述)产生编译为数字的标记,但为了索引我的元组,我实际上需要整数标记。 有什么技术可以实现这一点吗?也许还有其他一些宏或库? 如果没有 proc 宏,就无法创建这样的递增整数。不过,您可以使用 proc-macro crate 来实现此目的,例如 seq-macro。 但是,您不需要为此使用库。您可以采用不同的技巧:元组支持解构。 所以不要指self.0,而是指self.1。等等,您可以在函数的开头执行 let (a, b, c, ...) = self; 然后使用 a、b 等.. 当然,如果没有 proc 宏,生成这些标识符也是不可能的,但我们不需要生成它们 - 我们已经有了完全相同长度的标识符 - 类型参数名称。我们可以重复使用它们。 我们需要对非蛇形变量的警告进行切片,但它有效。 /// Recursively build the list type for list / tuple conversions. macro_rules! inner_tuple_to_list { () => { Nil }; ($elem:ty, $($rest:tt)*) => { Cons<$elem, inner_tuple_to_list!($($rest)*)> }; } macro_rules! inner_to_list_func { () => { Nil }; ($elem:ident, $($rest:tt)*) => { Cons { head: $elem, tail: inner_to_list_func!($($rest)*) } }; } /// Implements the TupleToList and ListToTuple traits for any tuples. macro_rules! tuple_to_list { ($($elem:tt,)*) => { impl<$($elem,)*> TupleToList for ( $($elem,)* ) { type List = inner_tuple_to_list!($($elem,)*); fn to_list(self) -> Self::List { #[allow(non_snake_case)] let ( $($elem,)* ) = self; inner_to_list_func!($($elem,)*) } } } }

回答 1 投票 0

预处理器中的字符串文字和宏连接

最终更新: 在阅读了许多相关问题和答案后,在我看来,答案很简单,尽管令人失望:不可能在预处理器中连接字符串文字。添加 mac...

回答 2 投票 0

宏返回值

宏可以返回对象吗? #定义宏1 {obj1} 由于宏是文本替换,我可以使用像 Macro1.function1() 这样的宏吗? 谢谢。

回答 6 投票 0

需要 Outlook 宏创建回复的建议

我似乎无法让收件人/抄送代码行正常工作。我现在已经将其注释掉了,并且宏在没有它的情况下也可以工作。 宏的设计是为了让我收到一封选定的电子邮件,单击宏...

回答 1 投票 0

有任何实用程序可以测试扩展 C/C++ #define 宏吗?

看来我经常花费太多时间试图让 #define 宏完全按照我想要的方式去做。我将在下面发布我当前的困境,感谢任何帮助。但实际上更大的问题是...

回答 5 投票 0

C 概念中的可变函数

我对C中的可变参数函数的概念不是很清楚。 在实际应用中,va_list、va_start、va_end等宏代表什么? 据我了解 va_start 声明了一个列表,va_start inizial...

回答 1 投票 0

根据没有 if 语句的值打印为十六进制 (0x) 或十进制 - 如何?

我正在尝试打印一个整数,其格式应为 %d 小数,除非其值为 FFFF,在这种情况下,应将其打印为 0xFFFF。如果没有不必要的 if 和 else ,我无法这样做

回答 1 投票 0

有没有办法自动将类似函数的宏“提升”为真正的内联函数?

我被分配去审查和更新一个旧的私人库,其中包含大量的 do { .. } while(0) 宏。 经过一番调查后,我决定用静态内联函数替换它们。之后...

回答 1 投票 0

`intern`函数的目的是什么?

我正在关注一篇文章,其中作者定义了以下宏: (defmacro make-is-integral-multi-of (n) 的 (let ((函数名 (实习生 (连接 '斯特林...

回答 2 投票 0

C++:在作用域上运行的宏

我怎样才能构造一个宏来接受这个: MY_MACRO(arg1, arg2) { doA(); doB(); } 并将其转化为等价的 { 自动助手 = MyClass(arg1, arg2); doA(); doB(); } 我在想

回答 1 投票 0

文件名每天更改时的 Excel 宏

所有单元格位置保持不变,唯一改变的是文件名中的日期。 我只是从一个 Excel 剪切并粘贴到另一个 Excel。 我怎样才能制定代码以允许......

回答 1 投票 0

pub 使用/一次“导出”许多子模块

我需要在一个文件(->子模块)中分别定义多种类型,并将它们全部暴露在模块的同一级别上。这会在 mod.rs 中产生大量重复开销: 模富; 模组栏; 模组巴兹;...

回答 1 投票 0

Excel中有没有办法删除某些字符而不丢失格式?

所以我有一大组数据,其中一列中有一个数据字段,我需要根据某个字符将其设置为斜体。如果一个单词以 $ 开头并以 & 结尾,则它需要是

回答 1 投票 0

在另一个宏的宏参数内调用一个宏

我有一个可以进行大量计算的宏。 需要对 do 循环中的许多变量重复该宏。 下面是一个模型(因为实际的宏太长)。 在下面的示例中 %macone 是...

回答 1 投票 0

Sas:在另一个宏的宏参数内调用一个宏

我有一个可以进行大量计算的宏。 需要对 do 循环中的许多变量重复该宏。 下面是一个模型(因为实际的宏太长)。 在下面的示例中 %macone 是...

回答 1 投票 0

字符串操作宏:‘,’标记之前预期有说明符限定符列表

我正在尝试编写一个宏,它将自动定义由组合和函数指针存档的多态类型。 我对宏字符串操作不太了解。这是嗬...

回答 1 投票 0

C 宏展开顺序

我有一个宏来重复宏,我用它在编译时用默认值填充数组: 常量整型数组 [512] = { MACRO_REPEAT(512, -2) // 重复 -2, 512 次 [4] = 10, ...

回答 2 投票 0

如何解决Excel单元格总和问题?

我有一个Excel问题。我想添加两个单元格值,就好像我删除这些值一样,它不应该影响结果单元格,如果我更改该值意味着如果我在这些单元格中添加新值,则该值

回答 1 投票 0

C:如何屏蔽宏参数中的逗号?

C中有屏蔽宏参数注释的通用方法吗?我知道括号可以用于此目的,但在添加括号导致语法的情况下,这将不起作用......

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.