问题标签 [boost-preprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C ++ 11如何代理只有其名称和父类的类函数?
我想知道是否可以使用 boost::mpl/preprocessor 或一些 noce C++11 功能从类类型和函数名称创建函数代理。
假设我们有:
课堂内电子邮件。我们知道它有 set_email 函数,我们想创建一个类似 API 的代理类
并且能够调用任何 set_email 重载。是否有可能以及如何创建这样的类来代理不知道类型(仅名称)的任意数量的重载函数?
c++ - 空序列上的 BOOST_PP_SEQ_ENUM
我怎么能写一个类似的宏BOOST_PP_SEQ_ENUM
,但处理空序列,即
c++ - BOOST_PP_ITERATION 用于可变长度参数
我想将 aluabind
合并到我的一个项目中。为此,我需要提供一个行为类似于call_function
(见下文)的函数。这个函数使用了一些模板魔法(由 Boost 提供),我希望能得到一些帮助。这是我第一次真正遇到模板元编程(这就是所谓的吗?)所以我有点迷茫。这里有一些片段我会很感激帮助。
我不太确定这个预处理器位是做什么的,我什至不知道它叫什么,所以搜索有点困难。A
是模板类型。如果我没记错的话,#a
会插入 的文字a
,但是多重#
有什么作用呢?在这个预处理器之后就是这个。
如您所见,它大量使用了 Boost。我用谷歌搜索BOOST_PP_ITERATION
,但仍然无法真正弄清楚它在做什么。有人可以向我解释一下,最好是在这段代码的上下文中,这些BOOST_PP
东西在做什么,以及它如何设法将参数放入args
.
我的最终目标是call_function
在我自己的代码中定义一个将生成的代码,我可以将其传递给我将定义args
的重载。call_function
这意味着我可以使用相同的调用约定,但也可以在调用之前应用一些预处理luabind
。
这个问题在我的措辞上非常具体,但我希望这些概念足够笼统,可以在这里使用。
visual-studio-2010 - Boost预处理器 - 奇怪的结果
检查以下宏:
目标是在每个元组周围添加双括号,结果是:
现在我使用以下宏来完成这项工作:
结果如下:
OUTPUT0 很好:
但是当调用 BOOST_PP_CAT 时,OUTPUT1 的结果是:
我不明白这种行为。有什么提示吗?
注意我使用 Visual Studio 2010
boost - BOOST 强化指南(预处理器宏)
我很难确定应该将哪些预处理器宏与 Boost 一起用于 (1) 调试工具(例如检查的迭代器)和 (2) 与安全相关的项目。
我似乎只能找到预处理器元编程(链接自 www.boost.org/libs/preprocessor/)。
更新(2013 年 2 月 18 日):我找到了Boost Macro Reference,但它缺少与调试或安全相关的任何内容。
有谁知道用于调试和安全的可用预处理器宏列表或强化指南?
c++ - Boost 预处理器不扩展
我有以下代码:
当我使用 Clang 3.2 或 g++ 4.6.3 对其进行预处理时,我得到:
(为了清楚起见,我添加了换行符)
问题是,为什么内部的 BOOST_PP_SEQ_FOR_EACH 没有展开?
再次传递此输出会扩展预期结果。
编辑:经过大量搜索,我读到一个宏如果被调用两次就不会扩展,我认为这就是原因。
编辑:我应该使用 PP_SEQ_FOR_EACH_I,R 并不意味着用作下标。
preprocessor - 使用预处理器进行文件迭代
我是否正确,boost 的文件递归要求使用递归的文件必须在包含路径中?
我在文档中的任何地方都没有看到它,但我只是调试了一个似乎是这种情况的问题。这使得使用它作为一种自动生成样板代码的方法在用于库时有些限制,因为库头文件可能不在包含路径中。
任何意见?
c++ - Boost 预处理器库
我在扩展到基本值时遇到了一些问题
这是输出。
有谁知道为什么第一个电话和第二个电话不一样?我以为我已经掌握了使用预处理器的方法,但我就是不明白。:(
c-preprocessor - 包含文件的宏扩展顺序
假设我在包含文件中有一个宏:
另一个包含它的文件:
是 VALUE 现在定义为 SUBSTITUTE 并且将在两次传递中宏扩展为 3 的情况,还是 VALUE 已设置为 SUBSTITUTE 的宏扩展值(即 3)的情况?
我问这个问题是为了试图理解 Boost 预处理器库以及它的 BOOST_PP_SLOT 如何定义工作(编辑:我的意思是底层工作)。因此,当我问上述问题时,如果有人能解释一下,我也很感兴趣。
(而且我想我也想知道到底在哪里可以找到“涂成蓝色”的规则写在哪里......)
c++ - Boost Preprocessor 数组元素
我正在重构一些现有的样板代码,并意识到 Boost:::Preprocessor 可以简化事情,但我已经遇到了麻烦......这是一个简单的例子:
我希望这将扩展到:
但我实际上得到:
重复四次。由于无法“看到”预处理器输出,我真的很难知道我哪里出错了——任何更有经验的人可以提供解决方案吗?
更新
切换到使用序列使其工作:
但是,我看不出最后一个示例不起作用的原因!
重复预处理器输出
这是原始代码的输出(带有BOOST_PP_REPEAT
):
为了清楚起见,添加了换行符。好吧,编译器抱怨的原因很明显,我想知道我还打算做什么来强制BOOST_PP_ARRAY_ELEM
扩展?