如何在for循环中获取变量的数量?

Phi*_*ias 12 c c++ llvm

考虑以下代码:

int main() {
    int a = 0;
    int b = 1;

    for (int i = 0; i < 3; i++) {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;
    }

   a = b+2;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码段中,三个变量的生命周期包含在循环体(i,cd)中.我希望能够使用LLVM计算任何给定循环体中存在寿命的变量(即对于此循环,我的代码应该返回3).

我找到了实时变量分析,但是我无法使用它来查找我上面描述的内容.

sta*_*son 1

也许这应该只是一条注释,但我无法内联表达代码:

只有两个变量在循环体内具有持续时间。i 在循环开始之前声明,并持续到循环体最后一次执行之后。换句话说,c和d被构造/销毁3次;第三次它们被破坏后,我就被破坏了。

因此,您编写的 for 循环相当于:

{
    int i = 0;
    while (i < 3)
    {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;

    }
    i++;
}
Run Code Online (Sandbox Code Playgroud)

额外的大括号组调用块作用域;i 超出范围并在 for 循环体之外、但在任何后续代码之前被销毁。