Передача универсальной структуры typdef для работы в C

#c #arduino

Вопрос:

Я работаю над Arduino и пишу универсальный класс cpp для взаимодействия в i2c. Я хотел бы знать, можно ли передать универсальный typedef struct код, представляющий регистр в функции, что-то вроде этого

 typedef struct {
  uint8_t not_used_01    : 1;
  uint8_t i3c_disable    : 1;
  uint8_t den_lh         : 2;
  //some other attributs
} reg_ctrl9_xl_t;

typedef struct {
  uint8_t not_used_01    : 1;
  uint8_t odr_h          : 1;
  uint8_t ord_lh         : 1;
  //some other attributs
} reg_ctrl5_g_t;
 

мой файл заголовка

 class I2c
{
   public:
      I2c(uint8_t address);
      void writeStruct(uint8_t register_addr, <what data type here??> register_struct); 
      //some other functions   
   private:
     uint8_t _address;   
}
 

Я не знаю, возможно ли это, я не знаю, какой тип данных я должен указать шрифтом register_struct , потому что здесь у меня, например, 2 регистра reg_ctrl9_xl_t , и reg_ctrl5_g_t я ищу функцию общих параметров для writeStruct

Комментарии:

1. Если вы создадите класс reg_ctrl с общедоступным чисто виртуальным методом writeTo(uint8_t register_addr) , то классы reg_ctrl9_xl и reg_ctrl5_g , например, могут наследовать reg_ctrl и реализовывать метод. Когда вы захотите сохранить такой подкласс, он сможет иметь тип reg_ctrl .

2. Хорошо, я буду искать виртуальный метод, я новичок в C 🙂

3. шаблон может быть альтернативой, но, похоже, вам нужен специальный код для каждого из них, поэтому перегрузка кажется более подходящей.

4. Я искал шаблон, но это то, что я понял. Если я использую шаблон, мне нужно создать одну функцию для каждого регистра typedef, правильно ли это ?

5. шаблон избегайте ручного копирования и вставки «одного и того же» кода (разрешение перегрузки может отличаться, но маркеры идентичны) для разных параметров, но действительно существует одна функция по типу параметра. Здесь у ваших участников разные имена, поэтому я полагаю, что у вас не может быть одного и того же кода. перегрузка кажется более подходящей.