我有一个基于另一个变量设置变量的函数。
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, ...。仅在运行时确定。对于各种(100 多个)不同的情况有多个这样的条件看起来并不好。有没有更好的方法在 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);
但这显然不起作用,因为预处理器指令在编译时而不是运行时被替换。我不确定是否有更好的方法?