问题标签 [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.

0 投票
1 回答
641 浏览

preprocessor - 预处理器、后处理器、几何处理器和 NC 处理器

大家好!谁能解释一下这些术语之间的区别:预处理器、后处理器、几何处理器和 NC 处理器?

0 投票
2 回答
483 浏览

c++ - 跟踪宏扩展

我想跟踪宏扩展 - 宏扩展了多少次以及扩展发生时的参数是什么。

例如,

我有一个宏可能看起来像这样:

在我的代码中,我有这样的东西:

在预处理器扩展结束时(哦,是的,有没有办法让特定的宏成为最后一个扩展?),我想知道 mymacro 已经使用了多少次以及传递的 args 是多少。在这种情况下,它将是 2 次,并且 args 将是 a 和 b。

我正在研究 boost-preprocessor lib。他们有 BOOST_PP_ARRAY,但我不知道如何让它“静态”,以便我以后可以使用它。

我在 BOOST_PP_COUNTER 中找到了一些东西。看起来 BOOST_PP_COUNTER 是可以在预处理器短语中保持其状态的东西。但我仍然不清楚如何做我想做的事。

0 投票
2 回答
1310 浏览

c++ - 包含宏的 C++ 方法声明

我正在使用 QuickFAST 库,在检查它时我发现了这个我似乎并没有真正得到的类声明!我的意思是类名之前的宏名是什么!

我也发现了这个声明

再一次我没有得到这个声明的使用!

欲了解更多信息,这里是 QuickFAST_Export.hpp

0 投票
1 回答
905 浏览

c++ - 使用 boost pp & mpl 对数组进行编译时初始化

鉴于:

我试图在编译时获得这种功能:

我认为它看起来像:

但我无法让它工作(我没有发布我使用 BOOST_PP_FOR 的完全失败尝试)。

ObjPair<T1, T2>::Foo是一个静态的signature方法bool(const obj&, const obj&)。它专门用于不同的 obj 类型。

我将使用这个数组来查找给定对象对的特定函数。这些对象作为它们的基类保存,我可以用一些数学来索引数组,以根据基类中可用的 ID 确定索引。

0 投票
1 回答
842 浏览

c++ - BOOST_PP_VARIADIC_SIZE 没有扩大

我正在测试 BOOST_PP_VARIADIC_SIZE 如下:

这是我扩展后得到的:

但如果我这样做:

扩展后,我得到:

我在 Mac OS 上使用了几乎最新的 clang。g++ 也产生相同的结果。

我想知道这里发生了什么。为什么可变参数增强预处理器不能正确扩展。我正在使用提升 1.49.0

0 投票
3 回答
8804 浏览

c++ - 注册一个 C++ 类,以便以后函数可以遍历所有注册的类

我正在尝试编写一个在运行时动态加载其扩展的应用程序。我使用 Boost Preprocessor 库编写了一个预处理器函数,给定一个名称列表,为每个名称声明一个类(并使它们都成为某个 AbstractPlugin 类的子类),然后声明一个包含这些类的 Boost MPL 序列。然后我编写了一个类,它尝试一个指向 AbstractPlugin 的指针,如果它可以转换为该 MPL 序列中的任何类型。这里的问题是我的预处理器函数需要我想要创建和加载的所有扩展的完整列表。是否有一些技术可以让我在单独的文件中注册每个扩展?

更新:

我相信,我对情况的解释太模糊了,所以我决定把它说得更具体一些。

我想定义一个扩展类型的集合。对于每种扩展类型,可以有任意数量的扩展。在运行时,程序加载外部库,解析入口点函数,调用它,结果得到一个指针。然后它尝试将该指针强制转换为所有已注册的扩展类型(使用dynamic_cast, 因此扩展类型的类都继承自某个多态基类)。如果对某个扩展类型的转换成功,则转换后的指针用于调用该扩展类型的特殊处理程序。

扩展类型的数量在编译时是已知的(显然,扩展的数量是无限的)。使用我的方法,加载器类使用这些知识来检查每个扩展类型是否存在处理程序(如果不存在,则程序无法编译)。此外,我的方法并不强制扩展类型的类对加载器有任何了解(因此修改加载器很容易)。但是如果每个扩展类型都注册自己会更方便。

0 投票
1 回答
477 浏览

c++ - Boost Preprocessor - 将 BOOST_PP_ENUM_PARAMS 传递给静态 const int?

我想要这样的东西:

编译器似乎不喜欢这样 - 是否有某种修复可以到达我想要的位置?

0 投票
2 回答
1672 浏览

c++ - 如何为连接字符串生成可变参数宏

我被困在这里...

p> 即使有 20 个参数,我如何生成 CONCAT 宏?也许我可以使用BOOST_PP_SEQ_FOR_EACH但我不明白该怎么做?

0 投票
2 回答
113 浏览

c++ - How to get a list of functions accessible to a class function using Boost Preprocessor?

Say I have a class that inherits from 25 difrent classes. I wonder how to gain a list of function signatures that can be called on parent classes (public) and public and private for a class I am looking at? (for example for automated RPC friend class creation) (Why I want to do this with defines: it will work on fly=) could we at least get a list of pub and priv functions of a class?)

0 投票
2 回答
2590 浏览

c++ - 如何通过之前编写的预处理器定义获取函数签名?

我想创建一个定义来解析函数签名并使用 Boost Preprocessor 创建如下内容:

或者至少:

这将产生:

对于具有该定义的每个函数。

N是否可以通过 Boost Preprocessor 为传入参数的函数和任何返回类型创建这样的定义包装器?