Одна и та же функция для разных значений элементов в структуре - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь использовать одну и ту же функцию для разных значений членов структуры в 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
}

Редактировать: Я хочу использовать edit () несколько раз в моей функции main (), и единственное, что я хочу менять каждый раз, это только некоторые значения внутри setf []. Так есть ли альтернативный способ? Я не хочу снова и снова переписывать одну и ту же функцию под разными именами, а просто меняю только значения setf []

1 Ответ

1 голос
/ 07 ноября 2019

Существует несколько способов.

  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
        }
    }
    
...