问题标签 [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 投票
4 回答
1792 浏览

c++ - 强制预处理器在重新定义中使用先前的定义

更新 3

没关系。我有点得到了我想要的东西。下面给出了类内的唯一标识符。

更新 2

增强预处理器

我将使用此功能实现类似于消息映射的东西。

问题是,对于每个 MAP_DECL,我需要在 2 个地方扩展宏。

Boost 预处理器应该(理论上)允许我将 MAP_DECL 累积到一个序列中,并在最后将其扩展为 func() (同时在我们进行时扩展类字段)。


更新 1

我目前正在使用 Boost Preprocessor 库。每次我需要向序列中添加一些内容时,我目前都无法创建一个新的宏变量/定义,如下所示。

我正在尝试扩展 Boost Preprocessor 序列,但目前我一直在这样做


原文

假设我有以下代码

如何强制第二行使用第一行的 CUR 值?

0 投票
14 回答
141787 浏览

macros - 如何在编译时显示 #define 的值?

我试图弄清楚我的代码认为它正在使用哪个版本的 Boost。我想做这样的事情:

#error BOOST_VERSION

但预处理器不会扩展 BOOST_VERSION。

我知道我可以在程序运行时将其打印出来,并且我知道我可以查看预处理器的输出以找到答案。我觉得在编译期间有一种方法可能会很有用。

0 投票
3 回答
1145 浏览

c - 用于纯 C 的预处理器元编程库

有没有人知道一个类似于boost::preprocessor(可能不那么先进)的库,可以很容易地使用/合并到纯 C 项目中?当然,大多数(全部?)在用Cboost::preprocessor编写时是可用的,但我更喜欢一个只有基本功能的小型库,不依赖于像 boost 这样的怪物。

0 投票
4 回答
938 浏览

.net - Boost Preprocessor library for generating a set of types based on a list of basic types e.g. PointI32, PointF32 etc. in C++/CLI

I am trying to figure out how to use the Boost.Preprocessor library http://www.boost.org/doc/libs/release/libs/preprocessor to unfold a "generic" type for different specific types. Below I will ask this for a simple point class example. Given:

I want to generate this type for different basic (POD) data types e.g.:

where PointF32 would be:

That is, based on a list of types:

I want to "unfold" the above type for these. Preferably with the "template" definition in a separate include file and not as a macro, to allow for easier debugging.

NOTE: I am not interested in hearing about C++ templates. I know how to use templates. But these are not useful in my case. As an example imagine these types are going be used from .NET in C#, but are being generated in C++/CLI. So please stick to the question.

The problem, of course, stems from the lack of template support in .NET and due to generics not being suitable to solve my problem.

0 投票
1 回答
2122 浏览

c++ - C/C++ 宏:如何使用一个宏生成两个单独的代码段(增强预处理器库?)

我正在寻找一种方法或方式来从宏调用列表中生成 typedef 列表和对象实例化列表,定义这些对象的类类型和构造函数参数。

它应该看起来像下面的(不工作)代码。要解决的问题是一种从一个宏调用列表中生成两个不同列表的方法。我想这是一个需要用 boost 预处理器库部分解决的问题,但我现在已经掌握了如何做。

0 投票
5 回答
25172 浏览

c++ - Boost 的 D_WIN32_WINNT 编译器警告

不知道该怎么做这个错误。在项目属性下添加-D_WIN32_WINNT=0x0501到 Visual Studio 的“命令行”选项,但它说它无法识别它并且警告仍然出现。

我也不确定如何添加预处理器定义。

1>请适当定义_WIN32_WINNT或_WIN32_WINDOWS。例如:
1>-在编译器命令行中添加-D_WIN32_WINNT=0x0501;或
1>- 将 _WIN32_WINNT=0x0501 添加到项目的预处理器定义中。

0 投票
4 回答
19683 浏览

c-preprocessor - C99 预处理器图灵完备吗?

在发现Boost 预处理器的功能后,我发现自己想知道:C99 预处理器 Turing 是否完整?

如果没有,不符合资格缺少什么?

0 投票
1 回答
6231 浏览

macros - C Preprocessor, Macro "Overloading"

I'm trying to do some kind of Macro "Overloading", so that MACRO(something), gets expanded differently than MACRO(something, else).

Using a snippet I got from here (I'm not sure if it's 100% portable) and some functions from the Boost PP Library, I was able to make it work :D

Now I'm still missing two other things that I want to do:

  1. (This one I don't really care if I never solve it) I believe that a MACRO can be written that when taking up the number of 'variants' and its correspondent 'output' generates a code similar like the one above. Something like TEMPLATE(3, function_A(...), function_B(...), function_C(...)) to generate the example above.

  2. What happens when TEST() is called without arguments? Well, VA_NARGS expands to 1. But the first argument is ""(nothing). I'm trying to find a way to either detect 'zero' arguments in __VA_ARGS__ or to differentiate between a 'null' argument and a real one, in order to extend the 'overloading' function to react to this situation. Any ideas?

0 投票
4 回答
1959 浏览

c++ - C 预处理器宏:检查是否声明了令牌

这是给C预处理器专家的:

如何声明一个enum带有一些标识符的列表,然后在 switch 语句检查列表中是否包含标识符?

我需要的示例:

我想过使用 Boost 序列并将其扩展为枚举中的逗号分隔列表,但是我以后如何检查该序列是否包含某个标记?

编辑:我能用 Boost 做的是:

这不是很漂亮,我更喜欢这样的东西:

但如何BOOST_PP_SEQ_CONTAINS实施?

0 投票
3 回答
906 浏览

c++ - 在编译时获得 boost::function arity?

BOOST_PP_IF我需要根据对象的数量(参数计数)在语句中做出决定boost::function。这可能吗?

boost::function_types::function_arity做我正在寻找的,但在运行时;我在编译时需要它。