GUIライブラリを開始するときに、Cで複数の構造体を扱っています。私は構造体を初期化する方法を決定するのが難しい時があります。ここでは2例は以下のとおりです。宣言時または別の関数で構造体を初期化する
#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
}
私の質問は1つが少なくともコード空間を使用した、ありますか?私はその機能がより良いと思った。私は定義を使用したかったので、それはstructポインタを複数回逆参照するよりもはるかに速いためです。私は構造体の初期化がどのように機能しているのか理解しておらず、続行する前に第二の意見を求めていました。
皆さんはどう思いますか?
また、背景情報もあります。私はARM Cortex M-4デバイスを開発する予定です。私は素敵な図書館が欲しい。
単純なイニシャライザを使用し、関数にすべてのフィールドを渡すためのオーバーヘッドを考慮して、単純なイニシャライザを使用し、その関数をまったく呼び出さない可能性が最も低いスペースは、パラメータをフィールドに格納する以外は何もしません。それ以外の場合、あなたの質問は広すぎます。これはディスカッションフォーラムではありません。 – Olaf
両方を試してみましょう。実際にどの作品がベストであるかを見てみましょう。それはこのレベルで推論することが可能であるよりも多くの要因に依存します。 – Notlikethat
おそらく、 'PageName'パラメータと' BoxName'変数は、(マクロ初期化子の中で)同じものであることを意図しています。 –