我想问是否有某种方法,自动“重复”宏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次。我想在随机大小的垃圾生成器中使用它
答案 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;
}