c - 当函数只有中间部分不同时,避免重复代码

标签 c code-duplication

我有一堆函数,它们的开始和结束方式都相同,只有中间部分不同。

我知道我能做到:

int
foo(int bar)
{
    intro();
    /* stuff that differs */
    outro();
}

但我想知道是否有另一种方法,使我不必在所有函数中重新输入 intro() 和 outro()。

最佳答案

一种方法是使用函数指针void (*function)(void) 是指向返回 void 且不带参数的函数的指针。

int foo(int bar, void (*function)(void))
{
    intro();
    /* call the function*/
    function();
    outro();
}

您通过传递具有原型(prototype)的函数的地址来调用它

void someFunctionName(void)

如果“不同的东西”应该接受参数或返回值,请根据口味进行调整。

关于c - 当函数只有中间部分不同时,避免重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937069/

相关文章:

php - 使用 PHP 生成/复制 HTML

javascript - 如何删除 javascript 监听器中的重复函数?

c - 'unsigned' 是什么意思?

c - STM32 使用 CubeMX 和 STMStudio : 'int main()' doesn't work

c - 帮助优化函数循环获取文件大小

javascript - 如何添加 Javascript 中所有测试使用的全局变量?

c# - 当返回类型不同时,我可以避免代码重复吗?

C - scanf 行为异常

c - 识别编译器产生的汇编程序中的某些组件

node.js - 多次调用相同的函数并处理合并的结果集