如何将条件语句装饰成表达式?

时间:2011-02-16 06:13:38

标签: c++ c

我想使用条件语句作为表达式,如下图所示,如何制作它?

0, (do {a++;} while (a > 100););

编辑,我想这样做的原因是我想为现有的表达式添加条件语句以进行调试,现有的表达式位于头文件中并包含在许多源文件中。例如,我想在前一个表达式达到某个特殊值时编写一些调试消息。

3 个答案:

答案 0 :(得分:4)

您只能在标准C ++中的表达式中包含do-while语句(有一个特定于GCC的扩展http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html)。但是你真正想要实现的目标是什么? - 我们或许可以找到一个优雅的替代品......

在C ++ 0x中,你可以接近,等等......

#include <iostream>

int main()
{
    int a = 10;
    std::cout << (([&]() -> int { do { a--; } while (a > 10); return a; })()) << '\n';
}

答案 1 :(得分:3)

只需将其放入inline函数即可。这适用于C ++和C99。如果您有特殊的事情应该在调用者的位置进行评估,请将调用包装到一个宏中,该宏完全执行您需要的评估。

答案 2 :(得分:2)

  

我想要这样做的原因是我想在现有表达式中添加条件语句以进行调试,现有表达式位于头文件中并包含在许多源文件中。例如,我想在前一个表达式达到某个特殊值时编写一些调试消息。

使用功能。如果要在标题中定义它,请将其标记为内联。

相关问题