macros相关内容

如何将 etrace 与动态库一起使用以按时间顺序跟踪 C++ 中的函数调用?

背景: 我有一个大型模拟工具,我需要了解它的逻辑行为.为了做到这一点,如果我有函数调用的时间顺序,我会得到最大的帮助,作为一个最小的工作示例. 我在网上找到了很多工具,例如 CygProfiler 和 etrace.在找到解决方案时我变得非常痛苦,以至于我开始遵循最疯狂的解决方案,即在调试器中使用“step into".如果您有一个小程序但没有完整的模拟工具,这是一个不错的选择. ..
发布时间:2022-01-11 20:12:06 C/C++开发

参数有几行的宏​​函数?

在 C++ 中,我需要定义一个宏.该宏会将代码“块"作为参数. 我们可以安全地使用几行代码作为宏函数的参数吗? 我在问自己是否: 以下代码是否有效,被标准定义为有效,如“跨平台"中的? 有没有更好的方法来做同样的事情(我不能在那里使用模板函数,因为我需要上下文). #define MY_MACRO( expr ) DOSOMETHING( (expr) );做其他事情(( ..
发布时间:2022-01-11 20:11:58 C/C++开发

使用记事本++ 如何制作一个数字递增的宏类型情况?

例如,我有大约 500 行.在每一行的开头我想添加一个数字.所以在第 1 行我想要“1)"然后第 2 行我想要“2)" 我知道我可以在 n++ 中做一个宏,但它不会是增量的.有没有办法做到这一点? 解决方案 Notepad++ 宏只播放键盘动作.他们不能做任何动态的事情. 但是有一个内置的(?) 插件可以为您做到这一点. 突出显示所有代码,然后选择“TextFX/Text ..
发布时间:2022-01-11 20:11:49 其他开发

检查 C++0x 算法添加的可用性

我正在尝试找出给定实现支持对算法头的哪些添加(gcc 和 MSVC 就足够了). 最简单的方法是使用与核心功能相同的方法:检查编译器版本并在支持语言功能时定义宏.不幸的是,我找不到显示任一编译器版本号的列表. 只是检查通用 C++0x 宏(GXX_EXPERIMENTAL 或 __cplusplus)就足够了,还是我应该检查编译器的更改列表并根据这些列表构建我的宏? http:/ ..
发布时间:2022-01-11 20:11:24 C/C++开发

如何提取 __VA_ARGS__?

我有一个宏来为每个参数调用静态函数. 例如: #define FOO(X) X::do();#define FOO_1(X,Y) X::do();Y::do(); 我的问题是我需要使用带有可变数量参数的 foo,是否可以使用 __VA_ARGS__ ? 如下一行: #define FOO(...) __VA_ARGS__::do() ? 谢谢 解决方案 宏扩展不像使用可 ..
发布时间:2022-01-11 20:11:13 C/C++开发

获取没有宏的编译时间日期和时间

使用 C++ 我按照自动计划编译我的代码,并且需要在代码本身中使用编译代码的时间.目前我只是使用 __DATE__、__TIME__ 宏来获取编译时间日期和时间.但是,即使没有对源代码进行任何更改(宏将在编译时膨胀),这也会导致二进制文件发生更改,这是不好的(如果没有更改,我不希望设置认为二进制文件已更改到源头). 是否可以在不使用任何会导致源更改的方法的情况下获得编译时间? 谢 ..
发布时间:2022-01-11 20:11:05 C/C++开发

如何创建一个多次使用一个值而不复制它的宏?

我想创建一个宏,将一对解包成两个局部变量.如果它只是一个变量,我不想创建该对的副本,这将完成: #define UNPACK_PAIR(V1, V2, PAIR) \汽车&V1 = PAIR.first;\汽车&V2 = PAIR.秒;UNPACK_PAIR(一,二,x); 但是,我也希望它不计算多次给出的表达式,例如这应该只调用一次 expensive_computation(): UNP ..
发布时间:2022-01-11 20:10:57 C/C++开发

C 预处理器:__COUNTER__ 的自己的实现

我目前在我的 C 库代码中使用 __COUNTER__ 宏来生成唯一的整数标识符.它运行良好,但我发现两个问题: 它不属于任何 C 或 C++ 标准. 也使用 __COUNTER__ 的独立代码可能会混淆. 因此,我希望自己实现一个等效于 __COUNTER__ 的功能. 我知道但不想想使用的替代方法: __LINE__(因为每行多个宏不会获得唯一的 ID) BOOST ..
发布时间:2022-01-11 20:10:46 其他开发

如何使用 Visual Studio 宏运行 TFS 工作项查询

我正在尝试编写一个 Vistual Studio 2008 宏来运行存储的 TFS 查询并显示结果.以前我创建了一个查询并将其命名为“分配给我"以显示当前分配给我的所有工作项.而不是查看->团队资源管理器,单击,向下单击树到我的查询,然后双击“分配给我"我想编写一个宏来自动执行这些步骤. 我想出的最好的是相当混乱: Sub TemporaryMacro()DTE.Windows.Item( ..
发布时间:2022-01-11 20:10:11 其他开发

带有宏的类型安全的通用容器

我正在尝试使用宏在 C 中创建一个类型安全的通用链表.它的工作方式应该类似于模板在 C++ 中的工作方式.例如, LIST(int) *list = LIST_CREATE(int); 我的第一次尝试是为 #define LIST(TYPE)(我上面使用的宏)定义一个 struct _List_##TYPE {...}.但是,这不起作用,因为每次我声明一个新列表时都会重新定义该结构.我通过这样 ..
发布时间:2022-01-11 20:10:01 其他开发

将 VBS 脚本分配给键盘快捷键

我有一个非常基本的 VBS 脚本,我计划在我的 Windows 7 机器上经常使用它.有什么方法可以将它绑定到键盘快捷键,这样我就不必讨厌地通过资源管理器导航到它. 我意识到这个问题与编程甚至脚本编写无关,但我无法在网上或通过我自己的实验找到直接答案.我确信某处有一个简单的解决方案...... 感谢您抽出宝贵时间阅读,并希望回复我的询问.埃文·乌古尔. 解决方案 Windows ..
发布时间:2022-01-11 20:09:54 其他开发

Visual Studio断点宏来修改一个值?

我正在调试一个应用程序 (C++),并且我在代码中找到了一个我想要更改值的点(通过调试器).所以现在,我已经设置了一个断点,我这样做了: 调试器到达断点 我修改了我想改变的变量 我按 F5 继续跑步 起泡、冲洗、重复 它经常碰到这个断点,所以我想自动化它.我想设置断点来运行宏,然后继续执行. 但是,我没有编写 VisualStudio 宏的经验,所以我不知道修改执行程序变量 ..
发布时间:2022-01-11 20:09:44 C/C++开发

将字符串转换为字符列表的 C++ 宏

是否可以有一个宏: CHAR_LIST(鸡肉) 展开为: 'c'、'h'、'i'、'c'、'k'、'e'、'n' [我想要它的原因:因为即使是中等大小的字符串,宏也比手动扩展方便得多.我需要扩展的原因是将字符串传递给可变参数模板] 解决方案 回答者更新,2015 年 7 月:由于上面对问题本身的评论,我们可以看到真正的问题不是关于每个宏瑟.提问者想要解决的真正问题是 ..
发布时间:2022-01-11 20:09:35 C/C++开发

无需复制和粘贴即可重用嵌套循环

假设我有这个嵌套循环 for (int a=1; a 我在我的代码的各个部分重用了这个循环,改变了函数 do_something.每次前三行都重写很无聊.例如,在 python 中,我会创建一个生成器来返回一个迭代器 (1, 1, 1), (1, 1, 2), ... 或类似 itertools.product. 在 c++ 中,我想到的唯一解决方案是定义一个宏.更好的东西?e 解 ..
发布时间:2022-01-11 20:09:27 C/C++开发

为什么在 C 中这样定义“max"宏?

#define max(a,b) \({ typeof (a) _a = (a); \typeof (b) _b = (b);\_a>_b?_a : _b;}) 为什么不简单地 (a>b ? a : b)? 解决方案 因为否则 max(f(1), f(2)) 会调用这两个函数之一两次: f(1) >f(2) ?f(1) : f(2) 而是通过“缓存" _a 和 _b 中的两个值 ..
发布时间:2022-01-11 20:09:18 其他开发

C 预处理器宏扩展

我正在尝试做(我本来以为的)是一个简单的宏扩展 #define CLEAR_DIGIT(a,b) iconMap[a] &= ~(b)#define R1 4, 16清除数字(R1); 现在我希望它扩展为 CLEAR_DIGIT(4,16) 扩展为 iconMap[4] &= ~16但是,它没有...如果我将 CLEAR_DIGIT 设为函数: void ClearDigit(unsigne ..
发布时间:2022-01-11 20:09:09 其他开发

宏优于 C++ 中的内联

我们知道内联是有利的,因为它们由编译器检查,并且与宏相比,当作为参数传递时,相同的操作(如 ++x)不会多次计算. 但在一次采访中,有人问我在 C++ 中宏更适合内联的具体优势或情况. 有没有人知道这个问题的答案或者可以给出一个想法? 解决方案 我唯一能想到的就是有一些技巧可以用宏来完成,而内联函数却无法做到.在编译时将令牌粘贴在一起,以及那种骇客. ..
发布时间:2022-01-11 20:08:53 C/C++开发

Clojure - 如何让我的宏在系统宏之前扩展?

如果我这样做,例如: (defmacro qqq [] '(toString [this] "Qqq"))(物化对象(qqq)) 失败是因为 reify 看到的是 (qqq) 而不是 (toString [this] "Qqq"). 通常的解决方案是一个用我自己的东西包装“reify"调用的宏,但它更长,更具侵入性. 如何使我的宏比通常的宏更强大? 期待类似: (defma ..
发布时间:2022-01-11 20:08:47 其他开发

可以避免这种自由项变量错误(在宏扩展时产生)吗?

我正在开发 DSL,但在扩展宏时遇到“免费期限"故障.我想知道是否可以避免.我已将问题简化为以下情况. 假设我们有这个表达式: val list = join {0123}打印(列表) 其中join是一个宏,它的实现是: def join(c: Ctx)(a: c.Expr[Int]): c.Expr[List[Int]] = {导入 c.mirror._一棵树匹配{case Bloc ..
发布时间:2022-01-11 20:08:38 其他开发