2016-06-27 9 views
0

구조체 내부에 구조체가 있고 외부 구조체의 초기화시 const로 내부 구조체를 초기화하고 싶습니다. 이외부 구조체 초기화시 내부 구조체를 상수로 초기화

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

그러나 :

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

내가 이런 식으로 할 수있는 알고

typedef struct A { 
    uint16_t id; 
}A; 

typedef struct B { 
    A a; 
    uint16_t data; 
} 

는이 코드에 의해 외부 구조체를 초기화 할 때 나는 내부 구조체를 초기화 할 수 있습니다 알고 내부 초기화를 직접적으로 일정하게 만드는 방법?

+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;