2015-01-25 4 views
4

이 경고에 관해 많은 질문이 있지만, 시도한 것 중 아무 것도 경고를 표시하지 않는 것으로 보입니다. I 0으로 구조체를 초기화하기 위해 노력하고있어GCC - 초기화 도구 주위에없는 괄호

typedef struct { 
    union { 
     float data[16]; 
     float col_row[4][4]; 
    }; 
} matrix44; 

// ... 

matrix44 result = {0}; 

하지만 그것에 대해 오류를 포기하지 얻을 수 없습니다

이 내가 가진 것입니다. 이것은 C11로 컴파일됩니다.

matrix44 result = {{0}}; 
matrix44 result = { {0}, {0} }; 
matrix44 result = { {0}, { {0}, {0} } }; 

그러나 물론 모두가 경고를 줄 :

는 또한, 말도 안되는 다른 변화를 시도했습니다.

구조체를 단순한 data 배열로 축소하면 경고없이 {{0}}으로 초기화 할 수 있습니다. 그러나 이것을 2 차원 col_row 배열로 줄이면 여전히 경고가 나타납니다.

경고를 피할 수있는 올바른 방법이 있습니까? 또는이 경우 경고가 잘못 되었습니까?

답변

11

사용 :

matrix44 result = {{{0}}}; 

gcc와 경고를 피하기 위해. 구조체의 첫 번째 쌍은 {}이고, 두 번째 쌍은 공용체이고 세 번째 쌍은 배열입니다.

+0

아, 그래서 어떻게 고장 났어요. 그건 트릭을 했어, 고마워! – Nairou

관련 문제