重复宏n次

时间:2015-04-06 11:12:29

标签: c++ macros c-preprocessor

我想问是否有某种方法,自动“重复”宏n次 - 自动我是指编译时间,我想做这样的事情:

#define foo _asm mov eax, eax
#define bar(x) //I don't know how can I do it
int main()
{
    bar(5); //would generate 5 times _asm mov eax, eax
    return 0;
}

我知道我可以在其他宏中嵌入宏,但我不知道如何才能完成n次。我想在随机大小的垃圾生成器中使用它

1 个答案:

答案 0 :(得分:1)

您可以使用递归模板执行此操作:

// recoursive step
template
  <
    size_t   count
  >
void n_asm() {
  _asm mov eax, eax
  n_asm<count - 1>();
}

// base of recursion
template<>
void n_asm<0>() {

}

int main()
{
   n_asm<5>(); 

   return 0;
}