boost-preprocessor相关内容

包含宏的 C++ 方法声明

我正在使用 QuickFAST 库,在检查它时我发现了这个我似乎并没有真正理解的类声明!我的意思是类名之前的宏名是什么! 类 QuickFAST_Export 消息:公共 FieldSet 我也发现了这个声明 friend void QuickFAST_Export intrusive_ptr_add_ref(const Field * ptr); 再一次我不明白这个声明的用途! 有 ..
发布时间:2022-01-11 20:20:07 C/C++开发

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

我试图弄清楚我的代码认为它正在使用哪个版本的 Boost.我想做这样的事情: #error BOOST_VERSION 但预处理器不会扩展 BOOST_VERSION. 我知道我可以在程序运行时将其打印出来,并且我知道我可以查看预处理器的输出来找到答案.我觉得在编译期间有一种方法会很有用. 解决方案 我知道这是在原始查询之后的很长一段时间,但这可能仍然有用. 这可以 ..
发布时间:2022-01-11 19:24:48 其他开发

使用宏构造#include 指令的路径

我希望包含由宏为我的程序的目标配置相关部分动态创建的文件路径. 例如,我想构造一个可以像这样调用的宏: #include TARGET_PATH_OF(header.h) 这将扩展为这样的内容: #include "corefoundation/header.h" 当源配置(在这种情况下)为 OSX 时 到目前为止,所有尝试都失败了.我希望外面有人这样做过? 不起作用的例 ..
发布时间:2022-01-11 19:20:00 C/C++开发

D_WIN32_WINNT 编译器警告与 Boost

不确定如何处理此错误.将 -D_WIN32_WINNT=0x0501 添加到 Visual Studio 的“项目属性"下的“命令行"选项,但它说它无法识别它并且警告仍然出现. 我也不知道如何添加预处理器定义. 1>请定义 _WIN32_WINNT 或_WIN32_WINDOWS 适当.例如: 1>- 添加-D_WIN32_WINNT=0x0501到编译器命令行;或 1>-将 _W ..
发布时间:2021-12-24 15:48:28 C/C++开发

如何在BOOST_PP_IF内扩展包含逗号的宏

我早些时候问了以下问题,但该解决方案在这种特殊情况下似乎不起作用. 如何打印使用Boost Preprocessor多次逗号 我正在尝试有条件地扩展包含逗号的宏.这是一个说明问题的示例: #define TEST(...)\BOOST_PP_REPEAT(\BOOST_PP_VARIADIC_SIZE(__ VA_ARGS __),\宏,\BOOST_PP_VARIADIC_TO_ ..
发布时间:2021-04-19 20:08:31 C/C++开发

基于宏的计数器

是否可以创建像这样的编译时间常数: //event.h#define REGISTER_EVENT_TYPE()...//返回last_returned_number + 1//标头1#定义SOME_EVENT REGISTER_EVENT_TYPE()//标头2#定义SOME_OTHER_EVENT REGISTER_EVENT_TYPE() 其中 SOME_EVENT 将为0, SOME ..
发布时间:2021-04-15 20:45:49 C/C++开发

如何压缩多个Boost预处理程序序列?

给出多个Boost预处理程序序列: #define S1(a)(b)(c) #定义S2(1)(2)(3) #定义S3(x1)(x2)(x3) 如何使用预处理器压缩它们,所以最终结果将是((a)(1)(x1))((b)(2)(x2))(( c)(3)(x3))? 注释 我想出了自己的答案,但是我愿意在合理的时间内接受比下面的答案更好的解决方案。 ..
发布时间:2020-10-10 23:05:12 C/C++开发

C99预处理器Turing是否已完成?

发现提高预处理器的功能我发现自己很纳闷:C99预处理器Turing是否已完成? 如果没有,缺少什么不符合条件? 解决方案 此处是滥用行为的一个示例实现图灵机的预处理器。请注意,需要一个外部构建脚本来将预处理器的输出反馈回其输入,因此预处理器本身并不完整。 从先前链接的项目的描述中: 预处理器是 not 图灵完成的,至少在 中该程序仅预处理一次。即使 允许程序包含其自身 ..

避免在字符串中进行if-else分支以进行类型调度

通常,当您编写一个接受参数的CLI工具时,必须对其进行处理。大多数情况下,您希望根据参数的值在行为之间进行切换。 以下是一个常见的用例,其中程序接受一个类型然后打印基于这种类型的东西。我正在使用Boost进行预处理并自动生成整个 if-else 分支。 就可维护性而言,这非常好,因为当我引入新类型时,我只需要更新 define 。另一方面,它远非现代而优雅。 我考虑过使用更好的枚举来 ..
发布时间:2020-09-28 01:17:07 C/C++开发

使用Boost Preprocessor解析元素序列

我定义了一个宏 #define TYPES (height,int,10)(width,int,20) 如何使用Boost Preprocessor扩展此宏? int height = 10; int width = 20; 我最多只能得到 height,int,10 和 width,int,20 作为字符串,但是不能解析单个元素. 解决方案 在处理前使用BOOST_P ..
发布时间:2020-09-22 04:51:59 C/C++开发

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

我试图找出我的代码认为正在使用的Boost版本.我想做这样的事情: #error BOOST_VERSION 但是预处理器不会扩展BOOST_VERSION. 我知道我可以在程序运行时将其打印出来,并且我可以查看预处理器的输出以找到答案.我觉得有一种在编译期间执行此操作的方法可能会有用. 解决方案 我知道这距原始查询已经很长时间了,但这仍然有用. 这可以在GCC中使 ..
发布时间:2020-05-05 08:49:29 其他开发

基于结构中的字段数编译时间开关生成

在C ++ 03中如何在编译时获得所选结构的成员数?我正在试验BOOST_FUSION_ADAPT_STRUCT,但我没有得到任何工作示例。 编辑: 我想在编译时生成switch语句,每个成员一个病例。所以让我们说我们有3个成员的结构,然后我想生成这个开关: switch(val) { case 0: break; case 1: break; case 2: ..
发布时间:2016-11-02 21:14:57 C/C++开发