2016-06-27 21 views
0

構造体内に構造体があり、外部構造体の初期化時に内部構造体をconstとして初期化したい。内部構造体を外部構造体初期化で定数として初期化する

typedef struct A { 
    uint16_t id; 
}A; 

typedef struct B { 
    A a; 
    uint16_t data; 
} 

私はこのコードによって、外側構造体を初期化するとき、私は、内部構造体を初期化することができます知っている:

B test = { 
    { 
    .id = 0x100 
    }, 
    .data = 0 
}; 

私はこのようにそれを行うことができます知っている:

const A aTest = { 
    .id = 0x100 
}; 
B test = { 
    .a = aTest, 
    .data = 0 

しかし、そこにあります内部の初期化を直接一定にする方法?

+2

何「この内部初期化を定数にする」という意味ですか?あなたは詳細を教えていただけますか? –

+0

[Cプログラミング言語標準に従って構造体を初期化する方法](http://stackoverflow.com/questions/330793/how-to-initialize-a-struct-in-accordance-with-c-programming)の可能な複製-language-standards) – wigy

+0

'B test = {.data = 0};' 'test.a.id'を' 0x100'に暗黙的に設定するべきですか? – user694733

答えて

1

あなたはconstとして内側部材を定義する必要があります。

typedef struct B { 
    const A a; 
    uint16_t data; 
} B; 

次に、あなたはこのように初期化することができます。これはコンパイラエラーを生成しますが

B test = { 
    { 
    .id = 0x100 
    }, 
    .data = 0 
}; 

test.a.id=1; 
関連する問題