C ++如何使用&#34; loop(n)&#34;表示&#34; for(int i = 0; i <n; i ++)“?

时间:2015-11-28 11:21:26

标签: c++ macros

=”“

define绝对不是一个好的解决方案。

#define loop(n) for(int i=0;i<n;i++)
int main()
{
    int i = 0;
    loop(10000) { i++; };
    cout << i << endl;//i==0 here,because of naming duplication.
    getchar();
    return 0;
}

除了使用非常复杂的名称替换i之外,还有其他解决方案吗?

1 个答案:

答案 0 :(得分:5)

如果我理解正确的话,使用宏的(邪恶的)方法是:

#define loop(n) for (int i=0; i < n; ++i)

int main()
{
    loop(10000)
    {
        std::cout << i << std::endl;
    }
    return 0;
}

一个不太邪恶的解决方案是使用lambda函数:

template<typename T>
void loop(int n, T func)
{
    for (int i=0; i < n; ++i)
        func(i);
}

int main()
{
    loop(10000, [] (int i)
        {
             std::cout << i << std::endl;
        });
    return 0;
}

但是不要在实际代码中这样做,只需编写简单的for语句,每个人都会理解你。