宏替换地图分配

时间:2013-06-15 09:37:03

标签: c++ templates map macros

这个(或类似的)有时看起来很方便:

#define ITEM_GET(variable,map) variable=map[#variable]
//...
double foo;
std::map<std::string,double> variables;
ITEM_GET(foo,variables);

如果没有使用某种模板的宏,我可以这样做吗?这是一种简短的做法吗?

1 个答案:

答案 0 :(得分:0)

我不一定会说这是不好的做法,但你必须确保优点超过缺点。我建议将这个宏的范围保持在最低限度。例如,如果您只在加载期间执行这些操作,请将宏的存在限制在与加载相关的函数内。

如果您的任务非常常见,那么提供宏似乎是一个明智的选择。如果只是为了偶尔的方便,我觉得宏的一般不当行为(主要是没有范围)是不值得的。

关于你的第一个问题,如果没有宏,就没有办法做到这一点。没有比预处理器晚的转换阶段可以访问与stringise运算符#等效的工具。