Если я следующая структура определена:Инициализация функции в LL
typedef struct bear_t {
char* name;
void (*eat)(struct bear_t* this);
void (*drink)(struct bear_t* this);
void (*sleep)(struct bear_t* this);
void (*study)(struct bear_t* this);
void (*live)(struct bear_t* this);
void (*dtor)(struct bear_t* this);
int health;
int happiness;
} bear_t;
В bear_t * Метод create_bear (аннулируются), я хочу сделать следующее:
- Создание нового медведя malloc
- Инициализирует способности медведя есть, пить, спать и жить по умолчанию (eat_fish, drink_water, sleep_lots, live).
- Инициализирует функцию исследования до NULL, поскольку по умолчанию медведи не знают, как учиться.
- Инициализирует здоровье и счастье медведя до 0.
- Инициализирует деструктор медведя (dtor) для удаления_bear.
- Устанавливает имя медведя на «медведь» (медведь-> имя = «медведь»).
- Возвращает медведя вызывающему.
Как инициализировать функции?
В C нет прямого пути. Если вы измените эти указатели на функции как статические, вы можете назначить их в самом определении. В противном случае вам нужно создать функцию-оболочку/макрос для создания объекта – knightrider
Это зависит от того, хотите ли вы обнулить любые другие поля или какую другую инициализацию вы планируете делать. – nneonneo
А как насчет других участников? Если установить их все в NULL, это приемлемо, тогда вы можете просто выполнить 'bear_t bear = {0};'. –