相关疑难解决方法(0)

关于宏参数的Foreach宏

我想知道是否有可能在宏参数上编写宏foreach.这是想做的事情:

#define PRINT(a) printf(#a": %d", a)
#define PRINT_ALL(...) ? ? ? THE PROBLEM ? ? ? 
Run Code Online (Sandbox Code Playgroud)

可能的用法:

int a = 1, b = 3, d = 0;
PRINT_ALL(a,b,d);
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所取得的成就

#define FIRST_ARG(arg,...) arg
#define AFTER_FIRST_ARG(arg,...) , ##__VA_ARGS__     
#define PRINT(a) printf(#a": %d", a)
#define PRINT_ALL PRINT(FIRST_ARG(__VA_ARGS__)); PRINT_ALL(AFTER_FIRST_ARG(__VA_ARGS__))
Run Code Online (Sandbox Code Playgroud)

这是一个递归宏,这是非法的.另一个问题是stop condition递归.

c c++ macros foreach

11
推荐指数
3
解决办法
2万
查看次数

编译时的C++类型注册技巧

我有以下情况:假设我有一堆类型(仿函数),我想在编译期间注册/编译,最好是像boost :: mpl :: vector.你知道这么做的诀窍吗?

我的愿望是拥有实现仿函数类型和注册文件的hpp文件,其中宏将类型引入编译.

例如

// registered.hpp
REGISTER("functor1.hpp") // implementation
REGISTER("functor2.hpp")
...
boost::mpl::vector<...> types; // full registration vector
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的.谢谢

c++ macros templates

10
推荐指数
1
解决办法
3434
查看次数

标签 统计

c++ ×2

macros ×2

c ×1

foreach ×1

templates ×1