我有一个以这种方式定义的遗留结构:
// file:MyStructure_def.h
STRUCT_BEGIN
STRUCT_FIELD(int,x)
STRUCT_END
// EOF
// file: MyStructure.h
#define STRUCT_BEGIN struct MyStructure{
#define STRUCT_FIELD(a,b) a b;
#define STRUCT_END };
#include "MyStructure_def.h"
// EOF
是否有可能使用BOOST_FUSION_ADAPT_STRUCT或任何其他宏来修改这样生成的结构到boost :: fusion而不用重新输入结构中的所有字段?
答案 0 :(得分:0)
怎么样
#include <boost/fusion/adapted/struct.hpp>
BOOST_FUSION_ADAPT_STRUCT(MyStructure,a)
对于较旧的编译器/升级版本:
BOOST_FUSION_ADAPT_STRUCT(MyStructure,(a,b))
同时查看http://www.boost.org/doc/libs/1_60_0/libs/fusion/doc/html/fusion/adapted/define_struct.html会使您自己的宏变得多余。
#define NONS
BOOST_FUSION_DEFINE_STRUCT(
(NONS), MyStructure,
(a, b))
定义struct /以及/适应它