我正在開發我的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'變量應該是一樣的(在宏初始化器中)。 –