는 I는 다음의 구조를 가지고런타임시 데이터 유형 롤오버 전에 허용되는 최대 값을 계산하는 방법은 무엇입니까?
struct Some_Struct {
uint32_t a;
int16_t b;
uint8_t c;
};
struct Other_Struct {
uint32_t a;
uint32_t b;
uint32_t c;
};
가변 크기와 같은 계산되고 :
uint32_t size = sizeof(Some_Struct) + sizeof(Other_Struct) * n;
질문하기, sizeof
Some_Struct 및 그 실제 크기에 의존 Other_Struct 주어진다 플랫폼, 아키텍처 및 패킹의 경우 이 롤오버되기 전에 런타임에 최대 n
의 최대 수를 어떻게 결정할 수 있습니까?
을 "[0] 정의되지 지정한다." - 그건 정확하지 않습니다. _flexible 배열 member_ :'Other_Struct e []'를 사용하십시오. 그''[1]'해킹은 유산이며 현대 C에서 정의되지 않은 행동을 불러옵니다. – Olaf
이것은 C99에서만 지원됩니다. 태그가 붙은 C++도 유연한 배열 멤버를 지원하지 않습니다. – Zhro
위의 노트에서 나는 질문을 다시 할 시간이 왔다고 생각한다. 이것은'c' 또는'C++ '인가? 그들은 같은 언어가 아니며 동일한 대답을 가지지 않을 것입니다. –