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

问题描述 投票:4回答:1

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

uint8_t bool_var = 0;

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

是否有更简洁,非宏观的表达if条件和块的方式?

c boolean conditional
1个回答
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,但什么都不会发生。

© www.soinside.com 2019 - 2024. All rights reserved.