Questions tagged «macros»

***请勿用于VBA / MS-Office语言。改为使用相应的[vba]标签。***宏是一种规则或模式,它指定根据以下内容应如何将某个输入序列(通常是一个字符序列)映射到一个输出序列(通常也是一个字符序列)。确定的程序。

3
Constexpr与宏
我应该在哪里使用宏,哪里应该使用constexpr?它们不是基本相同吗? #define MAX_HEIGHT 720 与 constexpr unsigned int max_height = 720;
92 c++  c++11  macros  constexpr 

5
重播vim宏,直到缓冲区结束
我想x在vim中运行一个刚记录在寄存器“ ”中的宏,该宏在打开的缓冲区的每一行中,从我的光标到缓冲区的结尾。我怎么做? 我知道我可以将宏重播n次: 15@x ...或者按住@直到我到达最后一行,但我只想敲击几下并完成操作。 提前致谢。
85 vim  macros 

3
Vim宏在视觉选择的每一行
我想在选择中的每一行上运行一个宏,而不是总计总的行数。例如,我可以编写一个宏进行转换: Last, First 进入 First Last 我希望它可以在所有这些行上运行: Stewart, John Pumpkin, Freddy Mai, Stefan ... 对Vim大师有什么想法吗? 编辑:这仅是一个例子,显然这很容易被修改,但是还有其他实例并不太容易,我更喜欢使用宏。
85 vim  macros  line 

2
仅扩展为其参数的PROTOTYPE宏有什么意义?
我有一个头文件,其中包含 #define PROTOTYPE(s) s 这有什么意义呢?似乎它将只是用其自身替换输入。 周围还有其他大量指令,但只有一个指令似乎被检查了是否定义:#ifndef PROTOTYPE。我在HDF4头文件中找到了执行以下操作的位置:#define PROTOTYPE。因此,这些都不能真正解决我的问题。似乎还是没用的。 使用方法如下: CS_RETCODE clientmsg_callback PROTOTYPE(( CS_CONTEXT * context, CS_CONNECTION *connection, CS_CLIENTMSG *clientmsg)); 这是使用Sybase Open Client的项目的一部分。clientmsg_callback稍后在这里使用: ct_callback(context, NULL, CS_SET, CS_CLIENTMSG_CB, (CS_VOID *)clientmsg_callback); 我将从这里开始一个示例程序: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc35570.1570/html/clcprgde/clcprgde10.htm clientmsg_callback稍后实现。我认为该示例最初是考虑到C而不是C ++编写的。也许与它有关?
82 c++  macros 



18
C宏有什么用?
我已经写了一些C语言,而且我读得足够好,可以大致了解它的功能,但是每次遇到宏时,它都会使我完全失望。我最终不得不记住宏是什么,并在阅读时将其替换在脑海中。我遇到的那些直观易懂的东西总是像小的迷你函数,所以我一直想知道为什么它们不只是函数。 我可以理解需要在预处理器中为调试或跨平台构建定义不同的构建类型,但是定义任意替换的功能似乎仅对使本来就很难理解的语言有用。 为什么为C引入了如此复杂的预处理器?还有没有人有使用它的示例,这会让我理解为什么#debug样式的条件编译时,为什么它似乎仍然用于简单的目的以外的用途? 编辑: 阅读了许多答案后,我仍然听不懂。最常见的答案是内联代码。如果inline关键字不这样做,则它有充分的理由不这样做,或者实现需要修复。我不明白为什么需要一种完全不同的机制来表示“真正内联此代码”(除了在内联之前编写的代码)。我也不理解提到的想法,即“如果它太愚蠢而无法放入函数中”。当然,任何需要输入并产生输出的代码都最好放在函数中。我想我可能不明白,因为我不习惯于编写C的微观优化,但是预处理器感觉就像是解决一些简单问题的复杂解决方案。

5
在C ++中使用双重包含保护
因此,我最近在我的工作地点进行了讨论,其中我质疑使用双重包含保护而不是单个保护。我所说的双重保护如下: 头文件“ header_a.hpp”: #ifndef __HEADER_A_HPP__ #define __HEADER_A_HPP__ ... ... #endif 在头文件或源文件中的任何位置包含头文件时: #ifndef __HEADER_A_HPP__ #include "header_a.hpp" #endif 现在,我知道在头文件中使用防护是为了防止多次包含已经定义的头文件,这是常见且有据可查的。如果已经定义了宏,则编译器会将整个头文件视为“空白”,并防止重复包含。很简单。 我不理解的问题是使用#ifndef __HEADER_A_HPP__和#endif周围#include "header_a.hpp"。我的同事告诉我,这为夹杂物增加了第二层保护,但是我看不到如果第一层确实完成了工作(或做到了吗?),那么第二层是多么有用。 我能想到的唯一好处是,它彻底阻止了链接程序费心查找文件。这是否是为了缩短编译时间(这没有被提及是有好处的),还是还有其他我看不到的东西在起作用?
73 c++  macros  linker 

1
记录Scala 2.10宏[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我将从一个例子开始。List.fill在Scala 2.10中,这相当于for元组作为宏: import scala.language.experimental.macros import scala.reflect.macros.Context object TupleExample { def fill[A](arity: Int)(a: A): Product = macro fill_impl[A] def fill_impl[A](c: Context)(arity: c.Expr[Int])(a: c.Expr[A]) = { import c.universe._ arity.tree match { case Literal(Constant(n: Int)) if n < 23 => c.Expr( Apply( Select(Ident("Tuple" + n.toString), "apply"), List.fill(n)(a.tree) ) ) …


5
如何使用Swift中的Objective-C #define
我正在迁移UIViewController课程,以便对Swift进行一些培训。我通过桥接头成功地使用了Objective-C代码,但是我需要导入一个包含#define指令的常量文件。 我在结合Swift和Cocoa和Objective-C(简单宏)中看到以下内容: 简单宏 通常#define在C和Objective-C中使用指令定义原始常量的地方,在Swift中使用全局常量代替。例如,常量定义#define FADE_ANIMATION_DURATION 0.35可以在Swift中使用更好地表达let FADE_ANIMATION_DURATION = 0.35。因为简单的类似于常量的宏直接映射到Swift全局变量,所以编译器会自动导入C和Objective-C源文件中定义的简单宏。 因此,似乎有可能。我已经将包含常量的文件导入到桥接头文件中,但是我的.swift文件没有可见性,无法解决。 我应该怎么做才能使我的常量对Swift可见? 更新: 似乎可以使用NSString常量,但不能使用布尔值: #define kSTRING_CONSTANT @"a_string_constant" // resolved from swift #define kBOOL_CONSTANT YES // unresolved from swift

3
linux __user宏的含义是什么?
我希望有人能解释Linux内核源代码中使用的__user宏的细微差别。 首先,宏: # define __user __attribute__((noderef, address_space(1))) 现在,经过一番谷歌搜索后,我读到该宏允许一个人将一个指针指定为属于用户地址空间,并且不应取消引用它。 我可能会遗漏一些明显的事实,但是有人可以解释一下此类宏的含义吗?例如,该宏将在何处使用的一个好例子是什么?同样,如果我缺少明显的内容,请原谅我。 为了说明这一点,我在检查一些USB代码(linux / usbdevice_fs.h)时遇到了宏。我只是想对内核中使用的宏(或其他类似的宏)有一个一般的了解。 感谢您的光临!

2
lambda宏如何创建lambda?
我在GitHub上找到了这段代码,但不太了解: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) 然后: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 内的下划线是什么#define?它如何返回函数指针?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.