c - 仅在 C 中执行一次代码的更简洁的方式?
问题描述
我经常有以下形式的代码:
uint8_t bool_var = 0;
for (;;) {
...
if (!bool_var) {
do_something();
bool_var = 1;
}
...
}
是否有更简洁、非宏观的方式来表达 if 条件和块?
解决方案
在大多数情况下,您的代码几乎都具有可读性和简单性。
但是,出于非常特定的目的,您可能会发现自己处于想要始终调用函数但有时没有效果的情况。然后,对函数指针使用一些技巧可能是有意义的:
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
,但什么都不会发生。
推荐阅读
- sql - Hive:根据年份和员工获得最小值?
- javascript - Next.js - 使用 router.push() 时禁用跳转到锚点
- c# - asp样板实现IEntityHistoryStore不工作
- android - 调用方法在对应的Item click In a RecyclerView
- .htaccess - 从 Htaccess 重定向 URL 中的 Tailing Dash
- wix - 如何使用 Wix 将文件安装到 D:驱动器(并检查 D:不是 CD ROM)
- flutter - 启动屏幕总是白色我的颤振应用程序启动
- python - PythonShell 在尝试在 heroku 中使用时给了我错误 EACCES spawn /app
- python - Python 计算已打开的 pdf 文件的页数
- java - 如何将实时数据从 java 代码流式传输到 excel?