首页 > 解决方案 > 仅在 C 中执行一次代码的更简洁的方式?

问题描述

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

uint8_t bool_var = 0;

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

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

标签: cbooleanconditional

解决方案


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


但是,出于非常特定的目的,您可能会发现自己处于想要始终调用函数但有时没有效果的情况。然后,对函数指针使用一些技巧可能是有意义的:

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,但什么都不会发生。


推荐阅读