问题标签 [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++ - 为什么这个 PP_ARG_COUNT 宏需要一个 PP_EXPAND?
我已经在 Visual Studio 2013 下编译了这段代码,它输出:
为什么这个宏需要一个 PP_EXPAND,而 PP_ARG_COUNT2 它不能正常工作?
c++ - 我们可以实现一个 max 或 min 宏,它可以接受可变参数(超过两个参数)
我想实现一个新的 max/min 宏,它可以接受两个以上的参数,例如:
然后,我可以像这样使用它:
如果这个宏可以帮助我们实现那个宏?
c++ - Boost.preprocessor:BOOST_PP_EQUAL 不工作
您好,我在 C 中遇到了 Boost.Preprocessor 的问题。我相信 C++ 和 C 宏的行为完全相同,因此在 C 中使用 Boost.Preprocessor 很好,无论如何我打算做一个小的完全预处理器库。我的问题是我无法使用BOOST_PP_EQUAL
. 这是您可以构建的示例代码:
我正在使用 clang 和 gcc 并且都告诉我宏 BOOST_PP_NOT_EQUALS 不存在!
我的代码有什么问题?提前致谢 !
-E
编辑:这是使用标志的非宏行。
有没有搞错 ?
c++ - Varadiac 宏,用于对类进行不同的偏特化
对于某些类,我们可以定义执行显式模板特化的宏作为 Boost 序列化库中的以下示例:
这适用于完全专业化,例如BOOST_IS_BITWISE_SERIALIZABLE(MyClass<int>)
但我想创建一个方便的宏,它适用于具有不同参数的部分专业化,如下所示:
我试图通过 Boost PreProcessor 文档来解决这个问题,但无法进行很多。是否有针对此的 Boost PreProcessor 解决方案?
c++ - 如何使用 boost 预处理器来运行一系列函数?
例如,我有一系列具有相同两个参数类型的函数 f1、f2 等。我想使用宏
用结果运行函数序列
我认为 boost 预处理器可以提供帮助。我试过了
但是失败了。怎么做?
找到如下答案
这种技术也适用于调用一系列宏。
c++ - 如何使用 boost 预处理器生成访问器?
例如
变得像
请使用 boost 预处理器序列来执行此操作,因为此宏将与其他已经使用 boost 预处理器序列的现有宏组合。
c++ - C ++ MACROS:条件代码包含在表达式NOT语句中
好的,我知道宏是邪恶的,应该不惜一切代价避免。我正在尝试减少重要的样板代码和重复,如果我不能将其宏化,就很难不犯错字。
这是一个有些人为的例子,因为我试图将我必须的真实代码简化为一个更简洁的例子。
这将正确扩展在 BINDIF 宏中找到的 std::bind 代码。但是,请注意第一个参数,即条件,设置为 1。如果我将此值更改为 0,它会正确地下降值 nullptr。问题是我希望在评估传递给 BINDIF 宏的“方法”参数时发生这种情况。我想在表中输入 nullptr 值,因此不会生成 std::bind 代码。
我完全知道这个例子看起来是多么做作,但是在我使用的实际代码中,大多数列都包含 nullptr,因为我稀疏地绑定到 4 个 std::function 指针之一。
这是1的扩展:
这是 0 的展开式:
请原谅任何错别字和这个问题的总长度。我在过去几天在这里和其他地方搜索了答案,但找不到任何似乎有效的东西。Boost 的宏文档非常少。
大声笑,当然。带有如下 nullptr 的表:
会产生如下代码:
c - 将 BOOST_PP_DEC 传递给另一个宏
我正在尝试完成类似的事情:
所以说FOO( 2 ) = Bar2_Bar1
问题出在N-1
那儿。预处理器不会做这样的数学运算,但是 boost 有方便的 BOOST_PP_DEC 宏来减少输入。
因此,如果我现在尝试以下操作:
我本来希望它可以工作,但它实际上直接粘贴了宏名称并且不评估它。
奇怪的是,如果我这样做:
它似乎工作。我到底在这里错过了什么?
c++ - 如何多次附加到宏?
使用boost preprocessor
图书馆我可以做这样的事情:
但是我该如何多次执行此操作?假设我想push_back
不止一次,在我的代码的不同部分,然后显示结果?
下面的代码只是打印出来dummy
: