问题标签 [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++ - 强制预处理器在重新定义中使用先前的定义
更新 3:
没关系。我有点得到了我想要的东西。下面给出了类内的唯一标识符。
更新 2:
我将使用此功能实现类似于消息映射的东西。
问题是,对于每个 MAP_DECL,我需要在 2 个地方扩展宏。
Boost 预处理器应该(理论上)允许我将 MAP_DECL 累积到一个序列中,并在最后将其扩展为 func() (同时在我们进行时扩展类字段)。
更新 1:
我目前正在使用 Boost Preprocessor 库。每次我需要向序列中添加一些内容时,我目前都无法创建一个新的宏变量/定义,如下所示。
我正在尝试扩展 Boost Preprocessor 序列,但目前我一直在这样做
原文:
假设我有以下代码
如何强制第二行使用第一行的 CUR 值?
macros - 如何在编译时显示 #define 的值?
我试图弄清楚我的代码认为它正在使用哪个版本的 Boost。我想做这样的事情:
#error BOOST_VERSION
但预处理器不会扩展 BOOST_VERSION。
我知道我可以在程序运行时将其打印出来,并且我知道我可以查看预处理器的输出以找到答案。我觉得在编译期间有一种方法可能会很有用。
c - 用于纯 C 的预处理器元编程库
有没有人知道一个类似于boost::preprocessor
(可能不那么先进)的库,可以很容易地使用/合并到纯 C 项目中?当然,大多数(全部?)在用Cboost::preprocessor
编写时是可用的,但我更喜欢一个只有基本功能的小型库,不依赖于像 boost 这样的怪物。
.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.
c++ - C/C++ 宏:如何使用一个宏生成两个单独的代码段(增强预处理器库?)
我正在寻找一种方法或方式来从宏调用列表中生成 typedef 列表和对象实例化列表,定义这些对象的类类型和构造函数参数。
它应该看起来像下面的(不工作)代码。要解决的问题是一种从一个宏调用列表中生成两个不同列表的方法。我想这是一个需要用 boost 预处理器库部分解决的问题,但我现在已经掌握了如何做。
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 添加到项目的预处理器定义中。
c-preprocessor - C99 预处理器图灵完备吗?
在发现Boost 预处理器的功能后,我发现自己想知道:C99 预处理器 Turing 是否完整?
如果没有,不符合资格缺少什么?
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:
(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.
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?
c++ - C 预处理器宏:检查是否声明了令牌
这是给C预处理器专家的:
如何声明一个enum
带有一些标识符的列表,然后在 switch 语句检查列表中是否包含标识符?
我需要的示例:
我想过使用 Boost 序列并将其扩展为枚举中的逗号分隔列表,但是我以后如何检查该序列是否包含某个标记?
编辑:我能用 Boost 做的是:
这不是很漂亮,我更喜欢这样的东西:
但如何BOOST_PP_SEQ_CONTAINS
实施?
c++ - 在编译时获得 boost::function arity?
BOOST_PP_IF
我需要根据对象的数量(参数计数)在语句中做出决定boost::function
。这可能吗?
boost::function_types::function_arity
做我正在寻找的,但在运行时;我在编译时需要它。