对不同变量的条件检查

标签 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, …。仅在运行时确定。对于各种(数百个)不同的情况有多个这样的条件看起来不太好。在 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);

但这行不通,原因很明显,预处理器指令是在编译时而不是运行时替换的。不知道有没有更好的办法?

最佳答案

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

button_x.on = !button_x.on;

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

关于对不同变量的条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439522/

相关文章:

c: strtod:双指针与对单指针的引用

php - 如果第一个参数在条件下为真,并且运算符将在下一次运行?

c - pthread和select()函数的作用是什么?

c - C : does GCC follow the C99 spec, 中的链接还是我不了解规范?

配置COM端口具有CRT功能

c - 为什么指针不递增?

javascript - 如何正确检查两个条件?

java - 为什么不使用 signalAll 激活等待线程?

c++ - 同一变量的多个值的 If 语句

c - 如何检查if语句中的两个条件?