使用宏来压缩代码

时间:2011-10-14 22:13:39

标签: c++ macros

我基于xml文件实例化各种对象。要从模板创建对象,请在xml文件中指定数据类型。因为我有很多应该支持的模板和数据类型,所以我想稍微压缩一下我的代码。我以为我可以通过使用宏来做到这一点,但由于我从未真正习惯它们,我不知道如何做到这一点。通过提供我想支持的数据类型列表,我想我可以简单地写一下

  MACRO(A, dataTypes)

而不是:

if(s == "float")
{
    return new A<float>(name); 
}
else if(s == "int")
{
    return new A<int>(name); 
}
else if(s == "bool")
{
    return new A<bool>(name); 
}
else if(s == "std::string")
{
    return new A<std::string>(name); 
}
... 

但是如何定义这样的宏呢? 代码也应该在Android上编译,所以它不应该依赖于另一个像boost这样的库。

1 个答案:

答案 0 :(得分:4)

宏将是这样的:

#define MACRO(T) if (s == #T) { return new A<T>(blockName); }

您只需要一个参数(类型),因为据我所知,您的代码中已修复A

如果您想一次创建多种类型的代码,这并不容易。你应该使用像boost预处理器这样的东西。