条件检查不同的变量

时间:2012-05-03 21:23:50

标签: c conditional-statements

我有一个根据另一个变量设置变量的函数。

if(!button_x.on)
   button_x.on = 1;
if(!button_y.on)
   button_y.on = 1;
if(!button_z.on)
   button_z.on = 1;
.
.
.

如果是x,y,z,......仅在运行时确定。对于各种(100s)不同的情况具有多个这样的条件看起来不好。在C中有更好的方法吗?


编辑: 我应该更好地构建我上面的例子。

if (!structureA.visited)            
    visit_structureA(); // does some operation
if (!structureB.visited)            
visit_structureB();
if (!structureC.visited)            
visit_structureC();

。 。

在编译时不知道结构的数量和结构的名称。但结构名称遵循上面显示的特定模式。它仅在运行时才知道。 我尝试使用像:

这样的宏
#define VISIT(str) \
    if (!structure##str.visited) \
        visit_structure##str();

//In the function:
// str = 'known at runtime' 
  VISIT(str);

但是,由于在编译时而非运行时替换预处理程序指令的明显原因,这不起作用。我不确定是否有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

在您的示例中,您根据相同的变量而不是另一个变量设置变量值,如果是这种情况,并且您想要将其从0更改为1,反之亦然,您可以无条件地执行此操作:< / p>

button_x.on = !button_x.on;

如果您有许多具有相同行为概念的人,请考虑使用数组并迭代它。

答案 1 :(得分:1)

在C中,以下条件:

if (!x)
  x = 1;

相当于:

x = 1;

如果变量是布尔值(开/关),我假设是在讨论按钮的情况。