入れ子の構造体の初期化について

[戻る]
もも 2013/04/09(火) 18:49:03
タイトルの通りですが、入れ子になっている構造体の初期化について教えてください。

typedef struct{
    char        chAName[18];
    unsigned char    uchF;
} ST_PRESET;


typedef struct{
    unsigned char    uchMF;
    char        chManual[18];
    ST_PRESET    stPreset[3];
} ST_SETTING;

上記のような構造体の定義にて、

ST_SETTING m_stSetting;

という変数を初期化するにはどうしたら良いですか?
ちなみに入れたい値はそれぞれ

chAName:0クリア
uchF:255

uchMF:255
chManual:0クリア

です。

ST_SETTING m_stSetting = { 255, {0}, { {0}, 255}};
としても、

ST_SETTING m_stSetting = { 255, {0}, { {0}, 255},{0}, 255},{0}, 255}};
でも意図した初期値になってくれません。

入れ子になっている場合の初期化の方法としてググってみたりもしたんですが、正解がつ
かめないです。

どうか教えていただけないでしょうか?
よろしくお願いいたします。

もも 2013/04/09(火) 19:18:08
[[解決]]
すいません、自己解決いたしました。

{255,{0},{{{0},255,},{{0},255,},{{0},255,}},};

で出来ました。
こんな初歩的な質問はどなたも参照されることは無いとは思いますが・・・


掲示板を汚してしまうことになってしまい申し訳ございませんでした。
次回からはもっと自分で調べて試してから質問いたします。

bun 2013/04/10(水) 10:41:26
結果として問題ないでしょうが、余計な ,文字がたくさんあります。
余計な ,文字を省くと、
  {255, {0}, {{{0}, 255}, {{0}, 255}, {{0}, 255}}};
かな。

仲澤@失業者 2013/04/10(水) 11:29:21
好みの問題ですが、この様な初期化は、

ST_SETTING m_stSetting = {
    255, // uchMF
    {0}, // chManual[]
    {
        { {0}, 255, }, // ST_PRESET{ chAName[]; uchF;} stPreset[0]
        { {0}, 255, }, // stPreset[1]
        { {0}, 255, }  // stPreset[2]
    },
};

の様に書くと、わかりやすいかも。
あと、「タグなし」はやめましょう(vv;)。

古いスレッドには追加発言できません。