답변
올바르게 사용하면 다음을 수행 할 필요가 구조체의 배열에 배열을 초기화하려면 :
typedef struct _TStruct {
uint Values[3];
} TStruct;
TStruct Data[3] = {
{{ 0x86, 0x55, 0x79 }}, {{ 0xaa, 0xbb, 0xcc }}, {{ 0x76, 0x23, 0x24 }}
};
에주의를 값의 모든 그룹 주위 이중 괄호로.
경고 : 괄호의 추가 쌍 (
gcc
-Wmissing-braces
플래그-Wall
플래그가 존재하는 경우에만, 정확하게는 "발견"것)을 다음과 GCC 오류가 발생하지 않도록하는 것이 필수적입니다 초기화 주위에없는 괄호를
주 : 이중 중괄호의
사용법
{{ }}
레이아웃을 변경하지 않습니다 메모리데이터의이 경고는 MS 비주얼 스튜디오 C++ 컴파일러
페이지에 표시되지 않습니다
당신의 질의 응답은 당신이 제공 한 연결된 질의 응답입니다. 왜 그 때 게시합니까? –
@ Jean-FrançoisFabre 구조체의 배열에서 배열을 초기화하는 방법을 보여주는 SO에 대한 질문/대답이 없었습니다. –
C 중괄호를 생략해도 C 표준에 따라 올바르지 않습니다. 추가 브레이싱은 컴파일러 결함을 해결하기 위해 "필수"입니다. –
(가) DUP 인용 [ GCC 53119 버그] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119) 서핑하는 것처럼 보입니다. e '{0}'을 사용할 때 중괄호가 누락되었습니다. 이 질문은 그런 식으로 초기화되지 않는 것으로 보입니다. – jww