一种更简洁的方法,仅在C中执行一次代码?

时间:2019-04-10 14:21:02

标签: c boolean conditional

我经常有以下形式的代码:

uint8_t bool_var = 0;

for (;;) {
    ...
    if (!bool_var) {
       do_something();
       bool_var = 1;
    }
    ...
}

是否存在一种更简洁,非宏的表达if条件和块的方式?

1 个答案:

答案 0 :(得分:0)

您的代码在大多数情况下都具有可读性和简单性。


但是,出于非常特定的目的,您可能会遇到自己想要始终调用函数但有时没有效果的情况。然后也许可以在函数指针上使用一些技巧:

typedef void func_t (void);
...
func_t* do_stuff = do_something;
... 

while(stuff) // this code can't be changed for whatever reason
{
  do_stuff();
}

在这种情况下,您可以提出以下建议:

void nop (void) {}
...
do_stuff = nop;

现在您可以继续拨打do_stuff,但什么都不会发生。