c - C - 如果函数指针不为空,有没有办法在不重复函数指针的情况下调用函数指针?
问题描述
拿这个代码
int main() {
void (*func)(int val) = NULL;
if (func) { // check if NULL
func(0); // call it
}
}
有没有办法调用函数指针func
而不必写func
两次?
就像是
func? (0);
解决方案
你可以写一个宏:
#define CALL_FUNC(func, param) \
do { \
if (func) func(param); \
} while (0)
并使用它:
int main() {
void (*func)(int val) = NULL;
CALL_FUNC(func, 0);
}
编辑:我不会推荐它,我在我的项目中使用了一段时间。一段时间后我实际上放弃了它,它增加了一点无用的复杂性。
我终于回到了您当前的代码,但格式化为 1 行:
int main() {
void (*func)(int val) = NULL;
if (func) func(0);
}
推荐阅读
- python - Python - 将字典的特定部分从最小到最大排序
- ios - 如何使用 HMAccessoryPayLoad 添加和设置附件
- python - 使用正则表达式删除动态时间和名称组合
- angular - 无法绑定到“ngModelOptions”,因为它不是 Angular 6 中“输入”的已知属性
- python-3.x - 按列显示所有分组
- javascript - Nodemon 未重新启动:[nodemon] 由于更改而重新启动
- android - 更改 Android 项目的包名称的最佳方法是什么?
- wpf - 以正确的日期格式输入文本时的 WPF DatePicker 验证
- rest-assured - 放心,prettyprint 会在输出中添加小数
- javascript - Fabric.JS 和 Fabric-Brush - 无法添加到下部画布