2016-07-04 1 views
0

어떻게 이러한 값 구조 아래 init를 수구조체 배열 요소 초기화

struct test_str { 
unsigned char Add[6]; 
unsigned int d; 
unsigned char c; 
}my_str; 

난이 시도했지만 에러 결과 :

현대 나중에 C++ 11 (로
struct test_str { 
unsigned char Add[6]; 
unsigned int d; 
unsigned char c; 
}my_str {.Add[0]=0x11,.Add[0]=0x22,.Add[0]=0x33, 
     .Add[0]=0x44,.Add[0]=0x55,.Add[0]=0x66, 
     .d=0xffe,.c=10}; 

답변

3

하여 질문은 원래 C++ 만 태그가 붙었습니다.) aggregate initialization이 있습니다.

struct test_str { 
    unsigned char Add[6]; 
    unsigned int d; 
    unsigned char c; 
} my_str { {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, 
      0xffe, 
      10 
     }; 

int main() 
{} 

Live on Coliru

중괄호의 내부 쌍 정말 필요하지 않습니다,하지만 난 명확성을 위해 그것을 좋아한다 : 그것은 다음과 같이 작동합니다.

추신 : 언어의 기초를 배우려면 C++ book의 좋은 입문서를 준비해야합니다.

편집 (당신이 질문을 다시 태그로) 및 C++ (11) 전 C에서

, 당신은 등호가 필요합니다. 또한 C에서 내부 괄호는 선택 사항이 아닙니다.

struct test_str { 
    unsigned char Add[6]; 
    unsigned int d; 
    unsigned char c; 
} my_str = { {0x11, 0x22, 0x33, 0x44, 0x55, 0x66}, 
      0xffe, 
      10 
      }; 

int main() 
{} 
+0

집계 초기화를 지원한다는 아이디어가 있습니까? ';' 예상했지만, '{'가 발견되었습니다. –

+0

@hosseinvalizadeh 전 전혀 모릅니다. 이것은 표준 기능이지만, 표준 C++ 호환 컴파일러에서 받아 들여야합니다. 당신의 질문은 C를 언급합니까? 그렇다면 다시 태그를 지정하십시오. – vsoftco

+0

태그가 편집 됨! 이 오류가 발생합니다 : ';' 예상했지만, '{'가 발견되었습니다. –