c - 是否有一个可以将语句作为参数的等效函数?

标签 c code-duplication

我需要在整个程序中使用以下代码部分大约 5 次,但用不同的代码行代替注释。

while (loop_day < (day+1)) {
    while (loop_size < (size+1)) {

        //new lines here

        size = size + 1;
    }
    loop_day = loop_day + 1;
}

我可以多次复制和粘贴此内容,但出于美观原因,我真的不愿意。我尝试搜索“可以将语句作为参数的函数”,但没有找到合适的内容。

编辑:我想将各种语句“嵌入”到代码中。

一个例子:

while (loop_day < (day+1)) {
    while (loop_size < (size+1)) {

        // code that stores various values into an array

        size = size + 1;
    }
    loop_day = loop_day + 1;
}


while (loop_day < (day+1)) {
    while (loop_size < (size+1)) {

        // code that reads values stored in that array

        size = size + 1;
    }
    loop_day = loop_day + 1;
}

但我想要像这样的东西:

custom_loop {
// code that stores various values into an array
}

custom_loop {
// code that reads values stored in that array
}

最佳答案

你可以想到回调函数。例如,

typedef void (*t_func)(int, int);

void doLoopOverDaysAndSize(t_func callback)
{
    while (loop_day < (day+1)) {
        while (loop_size < (size+1)) {
            callback(loop_day, loop_size)
            size = size + 1;
        }
        loop_day = loop_day + 1;
    }
 }

然后你可以传递一些像这样的函数

void myDaySizeHandler(int day, int size)
{
    // do something
}

关于c - 是否有一个可以将语句作为参数的等效函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50231058/

相关文章:

inheritance - 如何避免具有语义相同字段/属性的不同结构的代码重复?

c - 找出递归函数的时间复杂度

c - 有关串行打印的帮助 (Arduino C)

c++ - C++11 中具有 C 链接的复杂类型

c - 前缀到前缀的转换

c++ - 正交变量代码重复问题

c++ - "Enable_if"结构数据成员

c - 指针运算

java - 删除两个不相关类的相同公共(public)方法中的重复代码

java - 使用不兼容的包装器时如何减少代码重复