Hacker News new | ask | show | jobs
by JoeAltmaier 4510 days ago
SUre you could. The{} make it work.
1 comments

EDIT: I sit corrected. My post is wrong.

No, you can't, and no they don't.

    lock(lk_var) {
        lock(lk_var2) {
            var = var2;
        }
    }
That expands to:

    for(int i=0; (i < 1) && !lk_lock(lk_var); lk_unlock(lk_var), i++)
    {
        for(int i=0; (i < 1) && !lk_lock(lk_var2); lk_unlock(lk_var2), i++)
        {
            var = var2;
        }
    }
You end up with an i scoped inside another i.
C++ has variable shadowing, so that works correctly.

    for (int i = 0; i < 5; ++i) {
        for (int i = 0; i < 5; ++i) {
            printf("hello\n");
        }
    }
prints hello 25 times.
Oh right. My brain was stuck in another language. Wow, I forgot how much I'd forgotten about C++.
Actually that's just C (name nesting)