- 论坛徽章:
- 0
|
我有一个宏
#define DEFINE_VAR(type, var_name, init_val) type var_name(init_val)
每次调用这个宏就会定义一个全局变量,比如
DEFINE_VAR(int, x, 0); 就会被展开成 int x(0);
现在我希望有一个全局的注册表数据结构,比如vector<string> var_names;
希望每通过DEFINE_VAR定义一个变量,就把这个变量的名字存入这个数据结构中,以便在程序里面可以遍历这样的变量。
#define DEFINE_VAR(type, var_name, init_val) \
type var_name(init_val); \
var_names.push_back(#var_name)
上面的代码并不work,因为全局结构中不能有push_back等statement,而且这个var_names结构也是全局变量,和DEFINE_VAR调用的地方不一定在同一个源文件,分开编译后可能导致调用DEFINE_VAR的时候var_names还没有初始化。
总之就是这么一个具体的问题,不知道有没有高手能支个招。 |
|