Я работаю с кучей структур в C, когда я начинаю свою графическую библиотеку. Мне сложно решить, как инициализировать структуры. Вот два случая:Инициализировать структуру при объявлении или в отдельной функции
#define GUI_CreateBox(PageName,x,y,z,w,h,color) \
struct GUI_BOX BoxName = {x,y,z,w,h,color}
или
static void GUI_InitBox(struct GUI_BOX *box,uint32_t x, ... uint32_t color)
{
init code
}
Мой вопрос, который можно было бы использовать наименьшее кодовое пространство? Я решил, что функция будет лучше. Я хотел использовать определение, потому что это было бы намного быстрее, чем разыменование указателя структуры несколько раз. Я просто не понимаю, как работает инициализация структур, и прежде чем продолжить, вы хотите получить второе мнение.
Что думают все?
Также имеется некоторая справочная информация. Я буду работать над устройствами ARM Cortex M-4. Мне нужна хорошая библиотека.
Наименьшее пространство, вероятно, потребует использования простого инициализатора, а не для вызова этой функции вообще, учитывая накладные расходы для передачи всех полей функции, которая, кажется, ничего не делает, кроме как сохранить параметры в полях. В противном случае ваш вопрос слишком широк. Это не дискуссионный форум. – Olaf
Попробуйте оба, посмотрите, какие из них лучше всего подходят на практике (для любого подходящего определения «лучший»); это зависит от большего количества факторов, чем можно рассуждать на этом уровне. – Notlikethat
Предположительно, параметр 'PageName' и переменная' BoxName' должны быть одинаковыми (в инициализаторе макроса). –