结构中成员的不同值具有相同的功能

Same function for different values of members in a structure

我正在尝试对 C 中结构成员的不同值使用相同的函数。实际上,我的函数很大,我不想一次又一次地重写它。 那么,还有其他方法可以实现吗?

typedef struct {
     int xpos;
     char label[30];
     fielddesc field;
} editordesc;

我想使用相同的功能更改 xpos 和其他一些成员:

void edit(void)
{
   editordesc setf[] = { 5,"Description", 40, 0, plu.rec.DESCRIPTION };
   // code
}

void edit1(void)
{
   editordesc setf[] = { 10,"Date", 50, 10, plu.rec.Date };
   // code
}

编辑: 我想在我的 main() 中多次使用 edit(),每次我唯一想更改的只是 setf[] 中的一些值。那么有什么替代方法吗?我不想一次又一次地用不同的名称重写同一个函数,而只是改变 setf[]

的值

有多种方法。

  1. 将结构作为函数的参数。

    void edit(editordesc var);
    

    并调用该函数两次。

  2. 或者有结构数组并循环它。

    void edit(void)
    {
       editordesc setf[] = {{ 5,"Description", 40, 0, plu.rec.DESCRIPTION },
                        { 10,"Date", 50, 10, plu.rec.Date }};    
    
        for (unsigned int i = 0; i < sizeof(setf)/sizeof(setf[0]); i++) {
             //printf("%d",setf[i].xpos);
             //your code
        }
    }