我正在开发我的GUI库时使用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'变量应该是一样的(在宏初始化器中)。 –