boost-preprocessor相关内容
我正在使用 QuickFAST 库,在检查它时我发现了这个我似乎并没有真正理解的类声明!我的意思是类名之前的宏名是什么! 类 QuickFAST_Export 消息:公共 FieldSet 我也发现了这个声明 friend void QuickFAST_Export intrusive_ptr_add_ref(const Field * ptr); 再一次我不明白这个声明的用途! 有
..
在标准 C 或 GNU 扩展中是否有任何方法可以将内容附加到宏定义中?例如,给定一个定义为 的宏#define List foo bar 我可以附加 bas 以便它 List 像我定义它一样扩展 #define List foo bar bas? 我希望我能做这样的事情: #define List foo bar bas#define List_ Expand(列表)#undef 列
..
我正在尝试执行某种宏“重载",以便 MACRO(something) 的扩展方式与 MACRO(something, else) 不同. 使用我从 这里获得的片段(我是不确定它是否 100% 可移植)和 Boost PP 库中的一些功能,我能够让它工作:D //这两个计算参数的数量#define VA_NARGS_IMPL(_1, _2, _3, _4, _5, N, ...) N#def
..
我试图弄清楚我的代码认为它正在使用哪个版本的 Boost.我想做这样的事情: #error BOOST_VERSION 但预处理器不会扩展 BOOST_VERSION. 我知道我可以在程序运行时将其打印出来,并且我知道我可以查看预处理器的输出来找到答案.我觉得在编译期间有一种方法会很有用. 解决方案 我知道这是在原始查询之后的很长一段时间,但这可能仍然有用. 这可以
..
我希望包含由宏为我的程序的目标配置相关部分动态创建的文件路径. 例如,我想构造一个可以像这样调用的宏: #include TARGET_PATH_OF(header.h) 这将扩展为这样的内容: #include "corefoundation/header.h" 当源配置(在这种情况下)为 OSX 时 到目前为止,所有尝试都失败了.我希望外面有人这样做过? 不起作用的例
..
不确定如何处理此错误.将 -D_WIN32_WINNT=0x0501 添加到 Visual Studio 的“项目属性"下的“命令行"选项,但它说它无法识别它并且警告仍然出现. 我也不知道如何添加预处理器定义. 1>请定义 _WIN32_WINNT 或_WIN32_WINDOWS 适当.例如: 1>- 添加-D_WIN32_WINNT=0x0501到编译器命令行;或 1>-将 _W
..
例如 A 类{int m_x;浮动 m_y;双 m_z;int x() const {return m_x;}float y() const {return m_y;}double z() const {return m_z;}}; 变得像 A 类{MY_MACRO((int)(float)(double), (x)(y)(z));}; 请使用 boost 预处理器序列来执行此操作,因为此
..
使用 BOOST_PP ,我可以使用一个附加令牌将宏扩展为多个逗号分隔的值,如下面的代码所示. 但是,在无参数的情况下它不起作用. #define BOOST_PP_VARIADICS#include#include#include
..
我早些时候问了以下问题,但该解决方案在这种特殊情况下似乎不起作用. 如何打印使用Boost Preprocessor多次逗号 我正在尝试有条件地扩展包含逗号的宏.这是一个说明问题的示例: #define TEST(...)\BOOST_PP_REPEAT(\BOOST_PP_VARIADIC_SIZE(__ VA_ARGS __),\宏,\BOOST_PP_VARIADIC_TO_
..
是否可以创建像这样的编译时间常数: //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
..
#include #include 使用命名空间std; //展开 #定义PP_EXPAND(X)X //计数器参数计数 #定义PP_ARG_COUNT(...)PP_EXPAND(PP_ARG_POPER (__VA_ARGS__,5,4,3,2,1,0)) #定义PP_ARG_COUNT2(...)PP_ARG_PO
..
给出多个Boost预处理程序序列: #define S1(a)(b)(c) #定义S2(1)(2)(3) #定义S3(x1)(x2)(x3) 如何使用预处理器压缩它们,所以最终结果将是((a)(1)(x1))((b)(2)(x2))(( c)(3)(x3))? 注释 我想出了自己的答案,但是我愿意在合理的时间内接受比下面的答案更好的解决方案。
..
发现提高预处理器的功能我发现自己很纳闷:C99预处理器Turing是否已完成? 如果没有,缺少什么不符合条件? 解决方案 此处是滥用行为的一个示例实现图灵机的预处理器。请注意,需要一个外部构建脚本来将预处理器的输出反馈回其输入,因此预处理器本身并不完整。 从先前链接的项目的描述中: 预处理器是 not 图灵完成的,至少在 中该程序仅预处理一次。即使 允许程序包含其自身
..
通常,当您编写一个接受参数的CLI工具时,必须对其进行处理。大多数情况下,您希望根据参数的值在行为之间进行切换。 以下是一个常见的用例,其中程序接受一个类型然后打印基于这种类型的东西。我正在使用Boost进行预处理并自动生成整个 if-else 分支。 就可维护性而言,这非常好,因为当我引入新类型时,我只需要更新 define 。另一方面,它远非现代而优雅。 我考虑过使用更好的枚举来
..
如何使用boost :: preprocessor解压缩序列对? 例如,我有一个如下序列(两者之间的逗号无关紧要) (int,x)(double,y)(float,z) or (int,x),(double,y),(float,z) or ((int)(x))((double)(y))((float)(z)) 并想要转换为 int,double,float 和 x,
..
我定义了一个宏 #define TYPES (height,int,10)(width,int,20) 如何使用Boost Preprocessor扩展此宏? int height = 10; int width = 20; 我最多只能得到 height,int,10 和 width,int,20 作为字符串,但是不能解析单个元素. 解决方案 在处理前使用BOOST_P
..
对于某些类,我们可以定义进行显式模板专门化的宏,作为Boost序列化库中的以下示例: #define BOOST_IS_BITWISE_SERIALIZABLE(T) \ namespace boost { \ namespace serialization {
..
我试图找出我的代码认为正在使用的Boost版本.我想做这样的事情: #error BOOST_VERSION 但是预处理器不会扩展BOOST_VERSION. 我知道我可以在程序运行时将其打印出来,并且我可以查看预处理器的输出以找到答案.我觉得有一种在编译期间执行此操作的方法可能会有用. 解决方案 我知道这距原始查询已经很长时间了,但这仍然有用. 这可以在GCC中使
..
我正在尝试进行某种宏“超载",以使MACRO(某物)的扩展方式不同于MACRO(某物). 使用我从此处摘录的代码段不确定它是否100%可移植)以及Boost PP库中的某些功能,我能够使其发挥作用:D //THESE TWO COUNT THE NUMBER OF ARGUMENTS #define VA_NARGS_IMPL(_1, _2, _3, _4, _5, N, ...) N
..
在C ++ 03中如何在编译时获得所选结构的成员数?我正在试验BOOST_FUSION_ADAPT_STRUCT,但我没有得到任何工作示例。 编辑: 我想在编译时生成switch语句,每个成员一个病例。所以让我们说我们有3个成员的结构,然后我想生成这个开关: switch(val) { case 0: break; case 1: break; case 2:
..