C++ 我可以在表达式中编写函数吗?

时间:2021-04-12 14:24:44

标签: c++

我正在编写一个(我自己的语言)到 C++ 转译器。我希望能够提供一种虚拟子函数,该函数在调用它的同一范围内被转译为 C++ 代码的一部分。

这是我想要生成的 C++ 代码类型的示例:

if (a == {if (getValue(d) == 5) { long r = next(); next(); return r; } else return 0;})
dosomething();

它表示如果 a 等于括号中的结果,则 dosomething()

你可以看到这个想法是在表达式中内联一个函数。是的,这可以通过允许编译器内联来完成,但在这种情况下,我想继续访问外部作用域中的变量,如果它实际上是另一个函数,我会失去它。

有什么好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:4)

如果我正确理解你在做什么,你可以在这里简单地使用 lambda 表达式。这当然需要 C++11

<root class="object">
    <contacts class="array">
        <row>
            <Identifier class="string">02</Identifier>
            <Business_Phone>+34 67.89</Business_Phone>
        </row>
    </contacts>
</root>

如果您正在编写翻译器/转译器,您可能想尝试比这个通用的 if (a == [&] () { if (getValue(d) == 5) { long r = next(); next(); return r; } else { return 0; } }()) { dosomething(); } 更明确的捕获列表。

相关问题